全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1604 4
2018-05-26
请教大家,我有一连串病人血糖的数据,ID是病人编号,Glucose是血糖值。我想筛选出出现连续三次血糖值大于10的病人标记为1,否则标记为0,这该如何实现? 微信图片_20180526160115.jpg
二维码

扫码加我 拉你入群

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

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

全部回复
2018-5-27 10:14:30
大概是这样,没试对不对,你可以参考
flag <- matrix(c(unique(DATA$ID), NA), nrow = length(unique(DATA$ID)), ncol = 2)
for (id in unique(DATA$ID)) {
for (seq.G in 1:3) {
if (DATA[seq.G:(seq.G+3), "Gluoose"] > 10) flag[id,1:2] <- c(id, 1)
else flag[id,1:2] <- c(id, 0)
}
}
二维码

扫码加我 拉你入群

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

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

2018-5-27 22:49:33
我也有个思路:
Flag <- df %>% group_by(ID) %>% slice(1) #这是为了把所有ID提取出来
Flagdf <- df %>% mutate(second=lead(Glucose)) %>% mutate(third=lead(second)) %>% na.omit() %>% filter(Glucose>=10,second>=10, third>=10) %>% mutate(flag_1 = 1) %>% merge(Flag, ., by="ID",all.x=T) %>% mutate(flag=ifelse(flag_1==1,1,0))
二维码

扫码加我 拉你入群

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

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

2018-5-28 09:55:56
Ericabc 发表于 2018-5-27 10:14
大概是这样,没试对不对,你可以参考
flag  10) flag
嗯嗯,万分感谢。
二维码

扫码加我 拉你入群

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

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

2018-5-28 09:56:23
zerofung 发表于 2018-5-27 22:49
我也有个思路:
Flag % group_by(ID) %>% slice(1) #这是为了把所有ID提取出来
Flagdf % mutate(second=l ...
嗯嗯,谢谢。已解决!
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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