【发布时间】:2014-01-31 23:51:37
【问题描述】:
我正在尝试将以下 data.table 重塑为列联表(不完全是因为我不想将频率作为值,我只想要 0 或 1):
Df:
ID CC
990081899A CC2
990081899A CC115
990081899A CC39
990081899A CC39
990081899A CC115
990002362D CC2
990002362D CC115
990002362D CC115
990002362D CC115
990002362D CC6
990042716D CC2
我尝试了以下两件事,但得到了相同的结果:
第一:
Contingency<-with(Df, table(ID,CC))
Diag6<- cbind(ID = rownames(Contingency), apply(Contingency, 2 , as.character))
第二个:
我在数据中添加了 value 列,例如 Value = 1: 东:
ID CC Value
990081899A CC2 1
990081899A CC115 1
990081899A CC39 1
990081899A CC39 1
990081899A CC115 1
990002362D CC2 1
990002362D CC115 1
990002362D CC115 1
990002362D CC115 1
990002362D CC6 1
990042716D CC2 1
并尝试过:
Df<- data.table(dcast(Df,ID~CC,value.var="Value"),key="ID")
两个结果相同:
ID CC115 CC2 CC39 CC6
990081899A 2 1 2 0
990002362D 3 1 0 1
这里我不想要频率,我只想要它是否存在值应该是 1,否则为 0:
ID CC115 CC2 CC39 CC6
990081899A 1 1 1 0
990002362D 1 1 0 1
非常感谢任何建议。
【问题讨论】:
-
快速解决方法可能只是用 1 替换 0 以外的值
-
感谢 Ananta,这是最后一个选项,但我的数据太大,所以我避免了额外的代码行。
标签: r data.table reshape2 contingency