【发布时间】:2018-09-16 10:57:09
【问题描述】:
我想在 R 中聚合数据框时创建虚拟变量。
dat <- read.table(textConnection('ID Score Info
1 1 A 1
2 1 A 10
3 1 B 7
4 2 C 8
5 2 B 9
6 2 B 1
7 3 B 7
8 3 C 8
9 3 C 3
10 3 A 2'))
基本上,我想按“ID”聚合并计算具有相同 ID 的行数,这很容易,但我还需要根据“行”列创建虚拟变量。如果 A/B/C 存在于同一 ID 中,则虚拟变量的值为 1,否则为 0。 例如,ID 2 没有 A,因此 ID 2 的 Score_A 为 0,而 Score_B 和 Score_C 为 1。
输出如下:
ID Count Score_A Score_B Score_C
1 1 3 1 1 0
2 2 3 0 1 1
3 3 4 1 1 1
任何帮助将不胜感激。
【问题讨论】:
-
Score_C 对于 ID 1 应为 0
-
你是对的!修好了。
-
cbind(aggregate(Info ~ ID, dat, length), +!!table(dat$ID, dat$Score)) -
这是使用基本函数@rawr 的绝佳替代方案
标签: r dataframe dplyr aggregate dummy-variable