【发布时间】:2015-12-29 16:21:52
【问题描述】:
我正在尝试查找包含特定对的数据框中的组数。这是我所做的和所需输出的示例。
创建数据
df=data.frame(c("Sam","Sam","Sam","Jason", "Jason", "Kelly", "Kelly"),
c("e","f","g","h", "h", "e", "f"))
names(df)=c('name','value')
对查看至少没有出现在一个特定名称中的配对不感兴趣,因此我在生成配对之前放弃了这些观察
df=df[!duplicated(df[1:2]),]
df=df[ave(rep(1, nrow(df)), df$name, FUN=length)>1,]
pairs=t(combn(unique(df$value), 2))
现在我有两个像这样的对象
name value
1 Sam e
2 Sam f
3 Sam g
6 Kelly e
7 Kelly f
[,1] [,2]
[1,] e f
[2,] e g
[3,] f g
我想要的输出
pair.1 pair.2 occurrences
1 e f 2
2 e g 1
3 f g 1
【问题讨论】:
-
查看
igraph包。我相信你可以在这里找到一些骗子。并且请不要嵌入到您的 MWE 生产线中,这会与您的环境相混淆。 -
This post 应该有助于开始;并添加
merge:merge(data.frame(val1 = pairs[, 1L], val2 = pairs[, 2L]), setNames(as.data.frame(as.table(crossprod(table(df)))), c("val1", "val2", "freq")))
标签: r