我想创建一个表或一个新的数据框,为原始数据框(其中有许多列)中的每一列显示一个特定值的序列出现的次数。例如,如果我有以下数据帧:
x <- data.frame("Red" = c("a", "b", "a", "a", "c", "d"), "Blue" = c("b", "a", "a", "a", "a", "a"), "Green" = c("a", "a", "b", "a", "b", "a"))我想知道,对于每种颜色(红色、蓝色和绿色),值"a“发生了多少次(即,在它被另一个值中断之前,比如b或c)。
正确的答案如下所示:
Color a_sequences
1 Red 2
2 Blue 1
3 Green 3我已经在这个网站上找到了对单个向量使用rle函数的解决方案,但我不知道如何将其扩展到具有多列的整个数据帧,并获得具有序列计数的新表或数据帧,如上表所示。谢谢!
发布于 2019-05-31 11:54:06
在base R中,你可以这样做:
f = as.character(unique(unlist(x)))
t(sapply(x,function(y)table(factor(rle(as.character(y))$values,f))))
a b c d
Red 2 1 1 1
Blue 1 1 0 0
Green 3 2 0 0您的整个数据集似乎都包含在因子中,因此使用了代码as.character()
https://stackoverflow.com/questions/56387584
复制相似问题