在R

问题描述 投票:0回答:1

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:
r missing-data longitudinal
1个回答
0
投票
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)


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.