繁体   English   中英

使用r dplyr库在新列中生成合计数字

[英]Using the r dplyr library to generate aggregate numbers in a new column

我试图基于现有列中值的汇总,使用dplyr在数据框中生成新列。 给定我的数据框:

group1 <- c("2019","2019","2019","2018","2018","2017","2017","2017")
group2 <- c("2019-01-01", "2019-01-01","2019-01-01","2018-05-01","2018-06-01","2017-01-01","2017-01-01","2017-02-01")
group3 <- c("A","A","B","A","A","C","C","B")
df <- data.frame("Year" = group1,"Date" = group2,"Sample" = group3)

得到:

  Year      Date  Sample
1 2019 2019-01-01   A
2 2019 2019-01-01   A
3 2019 2019-01-01   B
4 2018 2018-05-01   A
5 2018 2018-06-01   A
6 2017 2017-01-01   C
7 2017 2017-01-01   C
8 2017 2017-02-01   B

因此,我想生成一个新列“ Count”,该列为每一行提供每个样本的唯一日期总数。 因此,对于以上数据,我希望结果为:

  Year       Date Sample Count
1 2019 2019-01-01   A     1
2 2019 2019-01-01   A     1
3 2019 2019-02-01   B     1
4 2018 2018-05-01   A     2
5 2018 2018-06-01   C     2
6 2017 2017-01-01   C     1
7 2017 2017-01-01   C     1
8 2017 2017-02-01   B     1

我尝试在r使用以下代码:

df %>%
  group_by(Year) %>%
    group_by(Sample) %>%
      group_by(Date) %>%
        mutate(Count = n_distinct(Date))

但是我没有得到正确的答案!

您可以尝试:

library(dplyr)

df %>% 
  group_by(Year, Sample) %>% 
  mutate(Count = n_distinct(Date))

如果要将几个变量传递给group_by ,则需要将它们放在一起-您正在做的是通过每个新语句取消以前的分组。

此外,如果您想计算唯一日期,则不应该按它们分组。

上面的代码将给出:

# A tibble: 8 x 4
# Groups:   Year, Sample [6]
  Year  Date       Sample Count
  <fct> <fct>      <fct>  <int>
1 2019  2019-01-01 A          1
2 2019  2019-01-01 A          1
3 2019  2019-01-01 B          1
4 2018  2018-05-01 A          2
5 2018  2018-06-01 A          2
6 2018  2017-01-01 C          1
7 2017  2017-01-01 C          1
8 2017  2017-02-01 B          1

请注意,您生成的数据框与显示给我们的数据框之间不匹配。 您的代码生成的数据帧为:

  Year       Date Sample
1 2019 2019-01-01      A
2 2019 2019-01-01      A
3 2019 2019-01-01      B
4 2018 2018-05-01      A
5 2018 2018-06-01      A
6 2018 2017-01-01      C
7 2017 2017-01-01      C
8 2017 2017-02-01      B

实际上,给定Year唯一具有2个不同DateSampleA (在2018年)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM