【发布时间】:2021-08-07 18:40:13
【问题描述】:
我正在寻求帮助,以便在根据 NA 的数量进行过滤时保留不完整的数据。我正在进行一项为期 25 周的准实验,其中干预发生在第 13 周。对于我的主要分析,我只包括在干预前和干预后至少进行 3 周测量的参与者。我能够使用此链接中的代码保留我的分析样本: Filter based on NA in dplyr
但是,当与具有完整数据的参与者结合时,我无法获得正确数量的不完整数据参与者以保留原始数据集中的样本量。例如,当我应用过滤器时,我获得了 2/3 的参与者,但是当我使用反向功能(即,从 is.na 中删除!)时,我没有获得另外 1/3。这是我用来获取分析样本的代码,然后是我试图用来获取数据不完整的参与者的代码:
BCData6 <- BCData5 %>%
group_by(user_id)%>%
filter(sum(!is.na(Average.Steps)[Intervention==0])>=3)%>%
filter(sum(!is.na(Average.Steps)[Intervention==1])>=3)
NLData7 <- NLData5 %>%
group_by(user_id)%>%
filter(sum(is.na(Average.Steps)[Intervention==0])>=3)%>%
filter(sum(is.na(Average.Steps)[Intervention==1])>=3)
应用此代码时,它会从 548,200 的原始样本量中产生 348,075 个观察值。但是,当删除!它产生一个包含 182,450 个观测值的数据集,总和为 530,525:比原始样本量少 17,675 个。
任何指导将不胜感激!
编辑
> dput(NLData6[1:25,c(9,10)])
structure(list(Week = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25), Average.Steps = c(2124,
3115, 2325, 2586, 4273, 3981, 5716, 4724, 3948, 1531, 1539, 4166,
2016, 2453, 1700, 1903, 1546, 2139, 1765, 1608, 2416, 2254, 2136,
1827, 1906)), row.names = c(NA, -25L), class = c("tbl_df", "tbl",
"data.frame"))
请原谅我的幼稚;我仍在研究 R Studio 本身以及 Stack Overflow 和 Cross Validated 的习惯。
【问题讨论】:
-
@akrun 是我的编辑,你指的是什么?感谢您对加快学习曲线的任何帮助
-
是的,我就是这个意思。谢谢。另外,如果可以的话,请显示您作为输入显示的数据的预期值。
-
抱歉,我想不出一种方法来使用清晰易读的小标题,所以我改用了图片