R подсчитать количество групп и удалить, если отсутствует n NA - PullRequest
1 голос
/ 17 июня 2019
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))

Я стремлюсь сгенерировать столбец count, который просто равен количеству не пропущенных значений в моем фрейме данных.

Это моя попытка, но она не удалась

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

После того, как я смогу создать эту переменную 'count', я надеюсь затем УДАЛИТЬ людей с 3 или более значениями NA, спасибо.

1 Ответ

3 голосов
/ 17 июня 2019
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

Создано в 2019-06-17 пакетом представ. (v0.3.0)

...