【发布时间】:2016-02-01 23:42:55
【问题描述】:
为了弄清楚这个问题,让我从我的数据框的一个小例子开始。
ID <- c(rep("first", 2), rep("second", 4), rep("third",1), rep("fourth", 3))
Var_1 <- c(rep("A",2), rep("B", 2), rep("A",3), rep("B", 2), "A")
Var_2 <- c(rep("C",2), rep("D",3) , rep("C",2), rep("E",2), "D")
DF <- data.frame(ID, Var_1, Var_2)
> DF
ID Var_1 Var_2
1 first A C
2 first A C
3 second B D
4 second B D
5 second A D
6 second A C
7 third A C
8 fourth B E
9 fourth B E
10 fourth A D
有一个ID 因子变量和两个因子变量Var_1 具有R=2 因子水平和Var_2 具有C=3 因子水平。
我想获得一个新的数据框,其中包含 (RxC)+1=(2x3)+1 变量以及所有因子级别组合的频率 - 分别针对 ID 变量中的每个级别,如下所示:
ID A.C A.D A.E B.C B.D B.E
1 first 2 0 0 0 0 0
2 second 1 1 0 0 2 0
3 third 1 0 0 0 0 0
4 fourth 0 1 0 0 0 2
我尝试了几个函数,但结果甚至不接近这个,所以它们甚至不值得一提。在原始数据框中,我应该得到 (6x9)+1=55 个变量。
编辑:有单独计算一个或多个变量的因子水平的解决方案,但我无法弄清楚如何对两个(或更多)变量的因子水平组合进行共同计数。当我得到答案时,现在向其他人实施解决方案似乎很容易,但我自己却无法做到。
【问题讨论】:
-
^^在末尾加括号。