首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复观察总结

重复观察总结
EN

Stack Overflow用户
提问于 2019-07-18 13:39:15
回答 2查看 322关注 0票数 1

我有一个数据框架,其中每个ID都属于一个唯一的组。我希望创建一个汇总表,它告诉我每个id的观察数量以及它属于哪个组。

代码语言:javascript
复制
dat=data.frame(id=c(1,1,1,2,2,2,2,3,4,4,4,4,4),group=c(1,1,1,0,0,0,0,1,0,0,0,0,0))
count=dat%>% group_by(id)%>% tally()
## A tibble: 4 x 2
     id     n
  <dbl> <int>
1     1     3
2     2     4
3     3     1
4     4     5

有了上面的代码,我可以计算观察的数量。但我不知道如何为组创建第三列。预期的结果是:

代码语言:javascript
复制
# A tibble: 4 x 3
     id     n group
  <dbl> <int> <dbl>
1     1     3     1
2     2     4     0
3     3     1     1
4     4     5     0

当我这么做

代码语言:javascript
复制
dat %>% group_by(id) %>% summarise(n=count(id), group = unique(group))

我遇到了一个错误:.datanames(Cols):== 1中的错误,但是,当我这样做的时候,==1就不正确了。

代码语言:javascript
复制
dat %>% group_by(id) %>% summarise( group = unique(group))

啊,真灵。我很困惑,为什么汇总命令不能接受多个参数。更新:错误是由另一个名为“plyr”的包引起的。当我分开的时候,总结是很好的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-18 14:12:16

akrun's answer更优雅,但作为一种替代方法,您可以简单地将group变量添加到group_by()调用中:

代码语言:javascript
复制
library(dplyr)

dat <- tibble(id = c(1, 1, 1, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4), 
              group = c(1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0))

dat %>%
  group_by(id, group) %>%
  tally()

# A tibble: 4 x 3
# Groups:   id [4]
     id group     n
  <dbl> <dbl> <int>
1     1     1     3
2     2     0     4
3     3     1     1
4     4     0     5

注意,如果您的idgroup与您的示例(id =1 -> group = 1,id =2 -> group = 0等)不一样,那么它将为每个组合生成一行(这显然非常有用)。例如,

代码语言:javascript
复制
dat2 <- tibble(id = c(1, 1, 1, 2, 2), group = c(1, 0, 0, 1, 0))

dat2 %>%
  group_by(id, group) %>%
  tally()

# A tibble: 4 x 3
# Groups:   id [2]
     id group     n
  <dbl> <dbl> <int>
1     1     0     2
2     1     1     1
3     2     0     1
4     2     1     1
票数 0
EN

Stack Overflow用户

发布于 2019-07-18 13:40:16

我们可以使用count

代码语言:javascript
复制
library(dplyr)
dat %>%
   count(id, group)
# A tibble: 4 x 3
#     id group     n
#  <dbl> <dbl> <int>
#1     1     1     3
#2     2     0     4
#3     3     1     1
#4     4     0     5
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57095885

复制
相关文章

相似问题

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