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