首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对数据帧中多列的特定值序列的个数进行计数

对数据帧中多列的特定值序列的个数进行计数
EN

Stack Overflow用户
提问于 2019-05-31 09:27:22
回答 4查看 66关注 0票数 1

我想创建一个表或一个新的数据框,为原始数据框(其中有许多列)中的每一列显示一个特定值的序列出现的次数。例如,如果我有以下数据帧:

代码语言:javascript
运行
复制
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)。

正确的答案如下所示:

代码语言:javascript
运行
复制
     Color a_sequences
1   Red  2
2  Blue  1
3 Green  3

我已经在这个网站上找到了对单个向量使用rle函数的解决方案,但我不知道如何将其扩展到具有多列的整个数据帧,并获得具有序列计数的新表或数据帧,如上表所示。谢谢!

EN

Stack Overflow用户

发布于 2019-05-31 11:54:06

在base R中,你可以这样做:

代码语言:javascript
运行
复制
 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()

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56387584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档