3

我有一个主数据框 ( 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
4

2 回答 2

2

似乎这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将其保留在输出中。

于 2020-05-27T17:22:08.533 回答
0

一个选项data.table

library(data.table)
setDT(data)[, .(Count = .N, Year = min(Year)), .(Name, City)]
于 2020-05-27T17:54:00.793 回答