R 如何在两列中排除特定比例NA的受试者

R 如何在两列中排除特定比例NA的受试者,r,na,subject,R,Na,Subject,我有一个数据集,其中列为受试者id,段(1-42),两列为振幅(微伏,t变换)。研究目的是比较手动和自动记录的肌电图数据的评分/量化方法。这就是为什么有两列的振幅。 我现在的目标是排除NA比例为≥ 两列中的任何一列中的20%。或者,打印符合标准的受试者的受试者id也就足够了。我有使用if-else函数的想法,但不知道如何定义标准 以下是我的数据集的第一行;每个主题有42行 《代码>结构(代码>结构(列表)结构(vp)结构(列表)结构(列表(vp)结构(vp)结构(列表(vp)结构(列表(vp)结

我有一个数据集,其中列为受试者id,段(1-42),两列为振幅(微伏,t变换)。研究目的是比较手动和自动记录的肌电图数据的评分/量化方法。这就是为什么有两列的振幅。 我现在的目标是排除NA比例为≥ 两列中的任何一列中的20%。或者,打印符合标准的受试者的受试者id也就足够了。我有使用if-else函数的想法,但不知道如何定义标准

以下是我的数据集的第一行;每个主题有42行

《代码>结构(代码>结构(列表)结构(vp)结构(列表)结构(列表(vp)结构(vp)结构(列表(vp)结构(列表(vp)结构(vp)结构(代码>结构(vp)结构(列表(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构)结构(vp)结构(vp)结构)结构(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构(vp)结构)结构(c(“c(“(“ADU)结构(vp)结构(vp)结构(vp)结构)结构(P)结构(NPU)结构(vp)结构(NPU)结构(NPU结构(P)结构)结构(vp)结构)结构(vp)结构)结构)结构(vp)结构(vp)结构)结构(P)结构(结构(结构U amp_automatic=c(73.7,NA,59.8,82.9,62.7,NA,53.6,65.0,63.3),(row.names=c(“vp”、“seg”、“手动”、“自动”),class=“data.frame”)
未测试,因为我无法使您的数据正常工作,但这应该可以:

library(dplyr)
npu_Kopie %>%
  ## assuming `vp` is the "subject" column??
  group_by(vp) %>%   
  filter(
    mean(is.na(t_amp_manual)) < 0.2 & mean(is.na(t_amp_automatic)) < 0.2
  )
库(dplyr)
npu_Kopie%>%
##假设“vp”是“主题”列??
分组人(vp)%>%
滤器(
平均值(is.na(t_amp_手动))<0.2和平均值(is.na(t_amp_自动))<0.2
)

这不是最干净的代码,但它可能会解决您的问题

df <- data.frame(a = c(1,2,3,4,5,6), b = c(NA,2,3,NA,5,NA), c = c(1,2,3,4,5,6), d = c(1,NA,NA,NA,5,6), e = c(1,2,3,NA,NA,6), f = c(1,NA,NA,NA,5,6))

for(i in 1:length(df[1,])){

 if(sum(is.na(df[,i]))/length(df[,i])<= 0.2){


 } else {

df <-  df[,-i]

}

}

df您的示例抛出一个错误:
错误:dput(npu_Kopie[1:10,c(1,2,3,4)]结构中的意外符号“
对不起,这是我的第一篇帖子;我刚刚解决了您提到的问题。这回答了您的问题吗?@denis这似乎是一个完全不同的问题-OP希望根据丢失值的百分比删除整个组。您的链接正在删除具有更简单的按行条件的行。我对R很陌生。是否使用“group_by”函数工作,因为每个主题有42行,并且这个数据框包含所有主题的数据?是的,这非常正确。
groupby
是特定于
dplyr
包和其中的其他函数的-它通常不工作。但其思想是它(在幕后)根据分组列的唯一值将数据框拆分为多个部分,分别对每个部分应用数据转换,然后在得到结果时将数据合并到一起。我强烈建议查看其中一些部分以了解更多信息。