我有一个3列的数据,如下所示:
RowID callerid item_id contributor
28476 919471180334 1014038 911111111111
28477 919471180344 1026448 919939727689
28478 919471180337 1026334 918002321300
28479 919471180343 1026177 911111111111111
28480 919471180342 1026063 919934520183
28481 919471180346 1026155 9199397276689
有数以百计的记录。我需要找到列调用者id和贡献者id元素之间的互惠关系。这意味着一个调用者id监听了贡献者发布的项目的次数,反之亦然。在这种情况下,有什么直接的函数有用吗?
这就是您想要的:
dat <- tibble::tribble(
~RowID, ~callerid, ~item_id, ~contributor,
28476, 919471180334, 1014038, 911111111111,
28477, 919471180334, 1026448, 919939727689,
28478, 919471180334, 1026334, 918002321300,
28479, 919471180334, 1026177, 911111111111,
28480, 919471180334, 1026063, 919934520183,
28481, 919471180334, 1026155, 919939727689)
dat %>% group_by(callerid, contributor) %>% summarise(n=n())
# `summarise()` regrouping output by 'callerid' (override with `.groups` argument)
# # A tibble: 4 x 3
# # Groups: callerid [1]
# callerid contributor n
# <dbl> <dbl> <int>
# 1 919471180334 911111111111 2
# 2 919471180334 918002321300 1
# 3 919471180334 919934520183 1
# 4 919471180334 919939727689 2
df <- data.frame(item_id = rep(919471180334, 6),
contributor = c(911111111111,919939727689,918002321300,911111111111,919934520183,919939727689))
基本R解决方案:
as.data.frame(table(df))
item_id contributor Freq
1 919471180334 911111111111 2
2 919471180334 918002321300 1
3 919471180334 919934520183 1
4 919471180334 919939727689 2
或使用plyr
plyr::count(df)
item_id contributor freq
1 919471180334 911111111111 2
2 919471180334 918002321300 1
3 919471180334 919934520183 1
4 919471180334 919939727689 2
不同的是,plyr::count
不包括计数为零的组合,这对您的情况没有影响。