我有一个看起来像这样的数据框,其中每一行代表一个样本,并重复相同的字符串
> df
V1 V2 V3 V4 V5
1 a a d d b
2 c a b d a
3 d b a a b
4 d d a b c
5 c a d c c
我希望能够创建一个新的数据帧,理想情况下,标题将是前一个数据帧(a,b,c,d)中的字符串变量,每行的内容将是每个数据帧的出现次数。相应的变量来自 原始数据帧。使用上面的示例,这看起来像
> df2
a b c d
1 2 1 0 2
2 2 1 1 1
3 2 1 0 1
4 1 1 1 2
5 1 0 3 1
在我的实际数据集中,有数百个变量和数千个样本,因此如果我可以自动从原始数据帧中提取名称,并将它们按字母顺序排列到新数据帧的标题中,这将是理想的选择。
答案 0 :(得分:3)
您可以尝试
library(qdapTools)
mtabulate(as.data.frame(t(df)))
或者
mtabulate(split(as.matrix(df), row(df)))
或使用base R
Un1 <- sort(unique(unlist(df)))
t(apply(df ,1, function(x) table(factor(x, levels=Un1))))