【问题标题】:R Dplyr: How do I add columns from an ungrouped dataframe to a grouped dataframe and retain the grouping?R Dplyr:如何将未分组数据框中的列添加到分组数据框中并保留分组?
【发布时间】:2020-09-14 20:14:46
【问题描述】:

我有一个主数据框 (data),其中包含有关购买的信息:姓名、年份、城市和一些其他变量:

Name Year City
N1   2018 NY
N2   2019 SF
N2   2018 SF
N1   2010 NY
N3   2020 AA

我使用new_data <- data %>% group by(Name) %>% tally(name = "Count") 得到这样的东西:

Name Count
N1   2
N2   2
N3   1

我的问题,最好使用 dplyr:

1)我现在如何将Name对应的城市添加到new_data,即:

Name Count City
N1   2     NY
N2   2     SF
N3   1     AA

2)如何将每个名称的最早年份添加到new_data,即:

Name Count City Year
N1   2     NY   2010
N2   2     SF   2018
N3   1     AA   2020

【问题讨论】:

    标签: r group-by dplyr grouped-table


    【解决方案1】:

    看来summarise可能更适合你,例如:

    data %>%
      group_by(Name, City) %>%
      summarise(Count = n(),
                Year = min(Year))
    

    输出:

    # A tibble: 3 x 4
    # Groups:   Name [3]
      Name  City  Count  Year
      <fct> <fct> <int> <int>
    1 N1    NY        2  2010
    2 N2    SF        2  2018
    3 N3    AA        1  2020
    

    虽然您也可以使用City 进行分组以将其保留在输出中。

    【讨论】:

    • 谢谢你,arg0naut91!
    【解决方案2】:

    data.table 的选项

    library(data.table)
    setDT(data)[, .(Count = .N, Year = min(Year)), .(Name, City)]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 2019-06-17
      相关资源
      最近更新 更多