首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在两列中排除特定比例NA的受试者

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

Stack Overflow用户
提问于 2020-12-11 22:05:15
回答 2查看 125关注 0票数 1

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

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

代码语言:javascript
复制
structure(list(vp = c("AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU", "AD_001_B_NPU"), seg = c(1, 2, 3, 4, 5, 6, 7, 8,9), t_amp_manual = c(70.6,81.4,58.1, 78.1, 59.2, 55.1, 55.1, 62.2,59.7), t_amp_automatic = c(73.7, NA, 59.8, 82.9, 62.7, NA, 53.6, 65.0, 63.3), (row.names = c("vp", "seg", "t_amp_manual","t_amp_automatic"), class = "data.frame")
EN

回答 2

Stack Overflow用户

发布于 2020-12-11 22:22:13

未测试,因为我不能让您的数据工作,但这应该可以工作:

代码语言:javascript
复制
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
  )
票数 1
EN

Stack Overflow用户

发布于 2020-12-11 22:30:18

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

代码语言:javascript
复制
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]

}

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65252791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档