【问题标题】:R dplyr How to aggregate summarise information by keeping informations from a particular recordR dplyr 如何通过保留特定记录中的信息来汇总信息
【发布时间】:2020-11-06 11:03:16
【问题描述】:

我想通过保留数据集的特定记录中的值来聚合信息(字符串和数字)。

这是一个例子:

data <- tibble(id1 = c(1, 1, 2, 1, 2, 3), id2 = c('a', 'a', 'a', 'c', 'a', 'a'), id3 = c(1, 2, 3, 4, 5, 6), indicator = c(0, 1, 1, 1, 0, 1), info = c('red', 'blue', 'yellow', 'black', 'green', 'pink'))

# A tibble: 6 x 5
    id1 id2     id3 indicator info  
  <dbl> <chr> <dbl>     <dbl> <chr> 
1     1 a         1         0 red   
2     1 a         2         1 blue  
3     2 a         3         1 yellow
4     1 c         4         1 black 
5     2 a         5         0 green 
6     3 a         6         1 pink 

这是我要输出的内容:

tibble( id1 = c(1, 1, 2, 3), id2 = c('a', 'c', 'a', 'a'), info = c('blue', 'black', 'yellow', 'pink') )

# A tibble: 4 x 3
    id1 id2   info  
  <dbl> <chr> <chr> 
1     1 a     blue  
2     1 c     black 
3     2 a     yellow
4     3 a     pink  

我不确定如何使用 dplyr 包做到这一点

谢谢你,

约翰

【问题讨论】:

    标签: r group-by dplyr conditional-statements summarize


    【解决方案1】:

    类似的东西?

    data %>% 
      filter(indicator==1) %>% 
      arrange(id1) %>%
      select(-c(indicator,id3))
    
    # A tibble: 4 x 3
        id1 id2   info  
      <dbl> <chr> <chr> 
    1     1 a     blue  
    2     1 c     black 
    3     2 a     yellow
    4     3 a     pink  
    

    【讨论】:

      【解决方案2】:

      这似乎是一种非常随意的输出方式。输出中是否有任何我可能遗漏的逻辑?

      【讨论】:

      • 这里是逻辑。通过'id1'和'id2',我只想保留'indicator' == 1的'info'。
      • 好的。我现在明白了。我认为@grouah 给出了正确答案。
      猜你喜欢
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多