我有一个数据框,看起来是这样的:
structure(list(ab = c(0, 1, 1, 1, 1, 0, 0, 0, 1, 1), bc = c(1,
1, 1, 1, 0, 0, 0, 1, 0, 1), de = c(0, 0, 1, 1, 1, 0, 1, 1, 0,
1), cl = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 2)), .Names = c("ab", "bc",
"de", "cl"), row.names = c(NA, -10L), class = "data.frame")
列cl表示聚类关联,变量ab、bc和de携带二进制答案,其中1表示是,0表示否。
我正在尝试创建一个表格,将聚类与数据框中的所有其他列(即ab、bc和de)进行交叉表格处理,其中聚类成为列变量。期望的输出如下:
1 2 3
ab 1 3 2
bc 2 3 1
de 2 3 1
我尝试了以下代码:
with(newdf, tapply(newdf[,c(3)], cl, sum))
这让我能够一次只对一个列进行交叉制表。我的数据框有1600多列和1个聚类列。有人能帮忙吗?
aggregate
函数;aggregate(. ~ cl, newdf, sum)
? - alexis_laz