R计数组计数,如果缺少n NA

时间:2019-06-17 19:40:33

标签: r dplyr aggregate

data=data.frame("person"=c(1,1,1,2,2,2,2,3,3,3,3,3),
"time"=c(1,2,3,1,2,3,4,1,2,3,4,5),
"score"=c(NA,100,97,63,NA,NA,51,NA,NA,73,NA,NA),
"count"=c(2,2,2,2,2,2,2,1,1,1,1,1))

我的目标是生成“计数”列,该列等于我的数据框中不遗漏的“得分”值的数量。

这是我的尝试,但失败了

data$count_try <- aggregate(data[c("count_try")], by=list(person), FUN=sum, na.rm=TRUE)

能够创建此“计数”变量后,我希望随后删除具有3个或更多NA值的人员,谢谢。

1 个答案:

答案 0 :(得分:3)

df1=data.frame("person"=c(1,1,1,2,2,2,2,3,3,3,3,3),
                "time"=c(1,2,3,1,2,3,4,1,2,3,4,5),
                "score"=c(NA,100,97,63,NA,NA,51,NA,NA,73,NA,NA))

library(dplyr)
df1 %>% group_by(person) %>% mutate(count = sum(!is.na(score))) %>% 
        filter(count > n()-3)
#> # A tibble: 7 x 4
#> # Groups:   person [2]
#>   person  time score count
#>    <dbl> <dbl> <dbl> <int>
#> 1      1     1    NA     2
#> 2      1     2   100     2
#> 3      1     3    97     2
#> 4      2     1    63     2
#> 5      2     2    NA     2
#> 6      2     3    NA     2
#> 7      2     4    51     2

reprex package(v0.3.0)于2019-06-17创建