全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6603 6
2021-03-30
现在有一个list,包含多个ID对应的若干变量的值,例如当ID=1,有a1,..,zy2y1共8个变量,见附件。想要根据每个ID中某些变量是否满足特定条件来判断是否保留该ID下面的所有值。
具体就是,如果某个ID中,zx2x1、zx2y1、zy2x1、zy2y1所对应的p至少有一个≤0.05,那么就保留整个ID对应的所有变量,否则就删除。
请问如何实现呢?


附件列表
批注.png

原图尺寸 20.57 KB

批注.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-3-31 00:35:08

library(data.table)

set.seed(10)
dat = data.table(
label = rep(c(‘a1’,‘a2’,‘c1’,‘c2’,‘zx2x1’,‘zx2y1’,‘zy2x1’,‘zy2y1’),10),
eps = rnorm(80),p = runif(80,0.04,0.1),
ID = rep(c(1:10),each = 8))

tmp = dat[(label %chin% c(‘zx2x1’,‘zx2y1’,‘zy2x1’,‘zy2y1’)),p,by = ID]
id = unique(tmp[p <= 0.05]$ID)
dat[ID %in% id]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-31 04:23:31
你可以分三步走。
第一步是把所有label带有z开头的行筛选出来,然后检查哪些行的p大于0.05。
第二步是把所选出来符合条件的的数据按ID分组,再看看那些组的长度是4(表明所有p值都大于0.05),把这些id记下
第三步是根据你记下的ID,去原数据中把所有符合条件的ID都删除。

这些你用dplyr搭配stringr就可以完成, 大致要用到的命令包括str_detect,filter,count
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-31 10:16:49
szxship 发表于 2021-3-31 00:35
library(data.table)
set.seed(1&#48;)
dat = data.table(
谢谢大佬回复!
直接用了您的代码来试跑,可好像不行呢,结果里面的p值对应不上原本的值:
label         eps                    p       ID
1:    a1 -0.95494386 0.04709304  3
2:    a2 -0.19515038 0.05431812  3
3:    c1  0.92552126 0.06823137  3
4:    c2  0.48297852 0.06113938  3
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-31 10:44:03
owenqi 发表于 2021-3-31 04:23
你可以分三步走。
第一步是把所有label带有z开头的行筛选出来,然后检查哪些行的p大于0.05。
第二步是把 ...
谢谢您的回复!
我对这个包不太熟悉,按照您的建议,用filter筛选出了有z开头的行中p大于0.5的: z<-filter(dat, label %in% c("zx2x1","zx2y1","zy2x1","zy2y1"))
z1<-filter(z,p>0.5)
z1 %>%
  group_by(ID)%>%
summarise(n=n())
得到了:
     ID     n
  <int> <int>
1     1     4
2     2     3
3     3     2
4     4     4
5     5     3
6     6     3
7     8     1
8     9     4

但是之后就不太明白要怎么处理了?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-31 11:24:59
YUMIKYO 发表于 2021-3-31 10:44
谢谢您的回复!
我对这个包不太熟悉,按照您的建议,用filter筛选出了有z开头的行中p大于0.5的: z%
  ...
给你写了个例子。如果组的长度是4不就相当于zx2x1, zx2y1,zy2x1, zy2y1四个p都大于0.05,也就是你描述的情况的补集吗?
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群