1

我的数据看起来像这样(尽管大约 12 年有数千个示例站点:

library(tidyverse)
df <- tribble(~Year, ~Sample, ~Total_A, ~Total_B, ~Total_C,
            2000, 'Riverside', 990, 08, NA,
            2000, 'Pasadena', 887, 101, 78,
            2000, 'Goleta', 786, NA, NA,
            2001, 'Riverside', 985, 89, 21,
            2001, 'Pasadena', 992, 67, 33,
            2002, 'Riverside', 991, 21, 09,
            2002, 'Goleta', 351, 34, NA,
            2002, 'Scottsdale', 345, NA, 75)

我已经使用汇总所有(下)来获得以下汇总数据表。

   library(dplyr)
   df1 <- df %>% 
    group_by(Sample) %>%
    summarize_all(funs(sum(!is.na(.)))) 

Sample, Total_A, Total_B, Total_C
Riverside, 3, 3, 2
Pasadena, 2, 2, 2
Goleta, 2, 1, 0
Scottsdale, 1, 0, 1

我想在数据表中添加一列,该列提供每个样本可用的每年数据。无论如何我可以使用summarize_all(或任何其他summarize命令?)来做到这一点,我想也许可以使用带有“paste unique$Year”的东西,但不确定这是否可能。我是 R 新手,希望得到任何指导。这是我正在寻找的东西:

Sample, Total_A, Total_B, Total_C, Years_Available 
Riverside, 3, 3, 2, 2000/2001/2002
Pasadena, 2, 2, 2, 2000/2001
Goleta, 2, 1, 0, 2000/2002
Scottsdale, 1, 0, 1, 2002
4

1 回答 1

1

你可以试试这个:

df1 <- df %>% 
  group_by(Sample) %>%
  mutate(years = toString(Year)) %>%
  group_by(Sample, years) %>%
  summarize_all(funs(sum(!is.na(.)))) 

我得到的输出是:

      Sample            years  Year Total_A Total_B Total_C
       <chr>            <chr> <int>   <int>   <int>   <int>
1     Goleta       2000, 2002     2       2       1       0
2   Pasadena       2000, 2001     2       2       2       2
3  Riverside 2000, 2001, 2002     3       3       3       2
4 Scottsdale             2002     1       1       0       1
于 2017-10-06T08:57:52.007 回答