随着时间的推移,生物标记物x浓度下降的患者数据集很多。我试图找到第一个场合,即峰值x的百分比低于25%,或者x的绝对值低于34或男性为16。我完成了%部分:
df25 <- df %>% group_by(id) %>% summarise(x_25 = which(x_frac <=25)[1])
但我想知道如何将绝对值合并到此?我尝试了以下内容,但它不起作用:
df25a <- df %>% group_by(id) %>%
mutate(x_25a = ifelse(x_frac>=25 & x<=34, day, NA))
我非常感谢你的专业知识,bw Annemarie
id day x x_frac sex "hoped for x_25"
1 0 1935 100 0 2
1 1 1039 54 0 2
1 2 308 16 0 2
1 3 112 6 0 2
2 0 31 100 1 1
2 1 11 35 1 1
3 0 204 100 0 NA
3 1 178 87 0 NA
答案 0 :(得分:1)
您的代码似乎有意义,也许是这样的? (这与您希望的col匹配,但我认为符合您的描述)
df25a <- df %>% group_by(id) %>%
mutate(x_25a = ifelse(sex==0,ifelse(x_frac<=25 | x<=34, day, NA),
ifelse(x_frac<=25 | x<=16, day, NA)))
摘要版本:
df25 <- df %>% group_by(id) %>% summarise(x_25 = ifelse(sex[1]==0,which(x_frac <=25 | x<=34)[1],
which(x_frac <=25 | x<=16)[1]))