在R Studio中删除多行中的未完成案例 [英] Deleting incomplete cases across multiple rows in R studio

查看:41
本文介绍了在R Studio中删除多行中的未完成案例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个纵向数据集,如下所示

ID <- c(1, 1, 2, 2, 3, 3, 4, 4)
time <- c(1, 2, 1, 2, 1, 2, 1, 2)
value <- c(7, 5, 9, 2, NA, 3, 7, NA)

mydata <- data.frame(ID, time, value)

  ID time value
1  1    1     7
2  1    2     5
3  2    1     9
4  2    2     2
5  3    1    NA
6  3    2     3
7  4    1     7
8  4    2    NA

在这个数据集中,我们有4个病例具有两个时间点的数据(比方说治疗前和治疗后)

我要做的是设置条件以删除两个时间点未完成的任何案例。在本例中,我想删除ID3(缺少时间点1)和ID4(缺少时间点2)。如下所示:

  ID time value
1  1    1     7
2  1    2     5
3  2    1     9
4  2    2     2

我运气不太好。我尝试了Complete.case()或Which()的变体,但都无济于事

我对R还很陌生,如果有人能帮我解决问题,我将不胜感激

编辑:感谢罗纳克回答我的问题。在反思我的真实数据后,我遇到了第二个问题。我的实际数据更多地反映在下面:

ID <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 8)
time <- c(1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 1)
value <- c(7, 5, 9, 2, NA, 3, 7, NA, 8, 9, 7, 6)

mydata <- data.frame(ID, time, value)



    ID time value
1   1    1     7
2   1    2     5
3   2    1     9
4   2    2     2
5   3    1    NA
6   3    2     3
7   4    1     7
8   4    2    NA
9   5    1     8
10  6    1     9
11  7    1     7
12  8    1     6

我还希望删除案例5、6、7和8的位置。这些ID具有时间%1的条目,但没有时间%2的条目。希望这有意义

谢谢一堆

推荐答案

如果您将数据切换为宽格式(其中每个时间点表示为其自己的列),则可以使用na.omit。使用dplyrtidyr函数:

library(dplyr)    
mydata <- mydata %>%
tidyr::spread(key=time, value=value) %>% # reformat to wide
na.omit() %>% # delete cases with missingness on any variable (i.e. any time point)
tidyr::gather(key="time", value="value", -ID) # put it back in long format

> mydata
  ID time value
1  1    1     7
2  2    1     9
3  1    2     5
4  2    2     2

请注意,这将起作用(它将只保留时间1和时间2的完整数据的案例),即使数据中缺少一个时间点,但没有明确的NA,如下所示:

> mydata
   ID time value
1   1    1     7
2   1    2     5
3   2    1     9
4   2    2     2
5   3    1    NA
6   3    2     3
7   4    1     7
8   4    2    NA
9   5    1     8
10  6    1     9
11  7    1     7
12  8    1     6

这篇关于在R Studio中删除多行中的未完成案例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆