【发布时间】:2020-02-15 08:05:07
【问题描述】:
我有一个看起来像的数据集
df <- data.frame(rbind(c("A","B","D",NA,NA,NA,3),
c("B","A","D","C",NA,NA,1),
c("B","C","E","A","D",NA,5),
c("A","B",NA,NA,NA,NA,4),
c("A","B","C","D","E","F",2)))
X1 X2 X3 X4 X5 X6 N
A B D NA NA NA 3
B A D C NA NA 1
B C E A D NA 5
A B NA NA NA NA 4
A B C D E F 2
N 列是组合发生的次数。
并且我希望获得无序列的累积总和(无论字母位于哪一列),这样:
X1 X2 X3 X4 X5 X6 N
A NA NA NA NA NA 15
B NA NA NA NA NA 15
C NA NA NA NA NA 8
D NA NA NA NA NA 11
E NA NA NA NA NA 7
F NA NA NA NA NA 2
A B NA NA NA NA 15
A B C NA NA NA 8
A B C D NA NA 8
A B C D E NA 7
A B C D E F 1
B C NA NA NA NA 8
....
所以想法是拥有所有可能的组合和频率,但考虑到列中出现的顺序不相关。
【问题讨论】:
-
为什么
N列是3,1,5,4,2?你能解释一下吗? -
这些数字是特定组合的频率。例如,在所需的数据帧中,组合 (A,B,C) 具有 N=8,因为恰好具有这三个字母的是 N 的总和,例如(B,A,D,C) + (B,C,E,A,D) + (A,B,C,D,E,F) = 1 + 5 + 2 = 8。
-
不是直接关于这个问题:通过调用
rbind,你已经制作了一个矩阵而不是一个数据框,所以你的列N被强制转换为字符,然后data.frame默认变成字符列(在这种情况下,all 您的列)到因子。所以现在N是一个试图代表一个数字的因素。不需要rbind;只需将向量全部放入数据框中 -
对不起,我误读了
rbind的目的。实际上,通过创建混合类型(字符串和数字)的向量,您可以将计数转换为字符串,然后再转换为因子。不想过多脱轨,但想指出可能出现的数据类型问题
标签: r dplyr count data.table