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值的人员,谢谢。
答案 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创建