使用dplyr计数

时间:2017-05-18 22:35:32

标签: r dplyr

使用此数据框:

df = data.frame(mes = c(1,1,2,2,3,3), ano = c(1981, 1982,1983), x1 = c(95,8,10,NA,NA,98), x2 = c(NA, NA, 89, 48, NA, 10))
    > df
      mes  ano x1 x2
    1   1 1981 95 NA
    2   1 1982  8 NA
    3   2 1983 10 89
    4   2 1981 NA 48
    5   3 1982 NA NA
    6   3 1983 98 10

我想得到这个:

  mes x1_n x2_n
1   1    2    0
2   2    1    2
3   3    1    1

我的意思是,对于每个mes唯一值,我想知道有多少非NA值。我试图使用dplyr::count(),但我得到了这个:

> count(df,mes)
# A tibble: 3 × 2
    mes     n
  <dbl> <int>
1     1     2
2     2     2
3     3     2

有什么想法?感谢。

1 个答案:

答案 0 :(得分:6)

count为您提供观察次数。如果您对非NA的观测数量感兴趣,您可以这样做:

 df %>%
   group_by(mes) %>%
   summarize(x1_n = sum(!is.na(x1)),
             x2_n = sum(!is.na(x2)))