在dplyr中改变新的连续变量

时间:2017-04-20 08:52:44

标签: r dplyr

随着时间的推移,生物标记物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    

1 个答案:

答案 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]))