0

我有一个 3 列的数据集,第 1 列是 ID(不是唯一的),第 2 列和第 3 列分别是与 id 关联的正值和负值。我是 R 新手,只是想弄清楚如何计算与每个 id 关联的值对的数量。表格和独特的功能没有帮助,因为我必须数对。谢谢!

4

3 回答 3

1

带有 data.table 包

library(data.table)
tdata[, list(paircount = .N) , by = c("ID","COLUMN2","COLUMN3")]

编辑:

根据迈克尔的反馈,我可能误解了这个问题。

tdata[, list(paircount = nrow((unique(.SD)))), by = "ID"]

应该得到你所需要的。

于 2015-04-08T20:55:27.360 回答
1

我假设您想计算每个 ID 的唯一对数。正如@BondedDust 提到的,使用interaction

df$pair <- with(df, interaction(COLUMN2, COLUMN3))
rowSums(xtabs(~ id + pair, df) > 0)
于 2015-04-08T23:06:50.423 回答
0

也许试试

unique(data[,c("ID", "COLUMN2", "COLUMN3")])

或者,按 ID 对结果进行分组:

by(data = data[,c("COLUMN2", "COLUMN3")],INDICES = data$ID, FUN = unique)
于 2015-04-08T20:26:19.563 回答