【发布时间】:2021-11-08 22:05:06
【问题描述】:
我有一个大型数据集,其中包含个人、他们的年龄和 5 次测试的分数以及一些缺失的数据。数据集如下所示:
id<-c(1, 2, 3, 4, 5, 6, 7)
age<-c(25, 43, 55, 12, 15, 67, 71)
score1<-c(1, 2, 1, 2, 1, 2, 2)
score2<-c(5, NA, NA, 5, 6, 7, 5)
score3<-c(NA, NA, NA, NA, 6, 7, 6)
score4<-c( 5, NA, NA, NA, NA, 6, NA)
score5<-c(5, 5, 4, 4, 5, 5, NA)
df<-data.frame(id, age, score1, score2, score3, score4, score5)
df
id age score1 score2 score3 score4 score5
1 1 25 1 5 NA 5 5
2 2 43 2 NA NA NA 5
3 3 55 1 NA NA NA 4
4 4 12 2 5 NA NA 4
5 5 15 1 6 6 NA 5
6 6 67 2 7 7 6 5
7 7 71 2 5 6 NA NA
对于 2-5 分,我想创建一个 Missing 条件,如果每个 id 在 2-5 分之间有超过 30% 的缺失数据 (NA),则 Missing=YES 否则 @987654327 @=否
所需的输出应如下所示:
id age score1 score2 score3 score4 score5 missing
1 1 25 1 5 NA 5 5 no
2 2 43 2 NA NA NA 5 yes
3 3 55 1 NA NA NA 4 yes
4 4 12 2 5 NA NA 4 yes
5 5 15 1 6 6 NA 5 no
6 6 67 2 7 7 6 5 no
7 7 71 2 5 6 NA NA yes
在 dplyr 中创建逐行条件的最佳方法是什么?我尝试在df %>% rowwise() %>% missing=ifelse(sum(is.na(.x))/length(.x)* 100 >=30), "yes", "no") 中使用dplyr::mutate 和ifelse,但我认为这是错误的并且似乎不起作用。
【问题讨论】:
标签: r dplyr conditional-statements purrr plyr