I有一个具有3个评估点的长格式数据集。这样的东西:
dataset = data.frame("id"=c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5),
"assessment"=c(1,2,3,1,2,3,1,2,3,1,2,3,1,2,3),
"scoreA"=c(7,9,5,NA,5,11,2,3,9,1,NA,NA,7,NA,5),
"scoreB"=c(1,2,7,6,1,11,3,3,2,1,12,NA,NA,4,5))
dataset
我想删除属于同一ID的所有观察结果,如果在评估1中有任何NA。
我正在尝试使用dplyr和tidyr函数“ group_by”“ filter”,etc进行整理
thanks!!
type here
我们只能保留那些ID,而评估1:
library(dplyr)
dataset |>
filter(!any(is.na(scoreA[assessment == 1]) |
is.na(scoreB[assessment == 1])), .by = id)
id assessment scoreA scoreB
1 1 1 7 1
2 1 2 9 2
3 1 3 5 7
4 3 1 2 3
5 3 2 3 3
6 3 3 9 2
7 4 1 1 1
8 4 2 NA 12
9 4 3 NA NA
,我们可以过滤到只有NA的评估1行,并将其加入原始数据:
dataset |>
filter(assessment == 1) |>
tidyr::drop_na() |>
distinct(id) |>
left_join(dataset)