我有一个3列的数据集,第1列是ID(非唯一),第2列和第3列是分别与id关联的正负值。我是R的新手,只是想弄清楚如何计算与每个id相关联的值对的数量。表和独特的功能没有帮助,因为我必须计算对。谢谢!
答案 0 :(得分:1)
使用data.table包
library(data.table)
tdata[, list(paircount = .N) , by = c("ID","COLUMN2","COLUMN3")]
编辑:
根据迈克尔的反馈,我可能误解了这个问题。
tdata[, list(paircount = nrow((unique(.SD)))), by = "ID"]
应该能满足你的需求。
答案 1 :(得分:1)
我假设您要计算每个ID的唯一对数。正如@BondedDust所提到的,使用interaction
:
df$pair <- with(df, interaction(COLUMN2, COLUMN3))
rowSums(xtabs(~ id + pair, df) > 0)
答案 2 :(得分:0)
也许试试
unique(data[,c("ID", "COLUMN2", "COLUMN3")])
或者,通过ID获得结果集合:
by(data = data[,c("COLUMN2", "COLUMN3")],INDICES = data$ID, FUN = unique)