2017-04-20 63 views
0

隨着時間的推移,生物標誌物x濃度下降的患者我有一個數據集。我試圖找到第一次出現x峯的百分比低於25%,或者x的絕對值低於34的男性或16的女性。我已經完成了%部分:在dplyr中突變新的連續變量

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)) 

我將是你的專長非常感激,體重安娜瑪麗

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

你能告訴@akrun我添加了一個「希望你的預期輸出 – akrun

+0

爲「輸出到我的問題謝謝 – Annemarie

+0

不應該低於25,'x_frac <= 25'? – timfaber

回答

1

您的代碼似乎是有道理的,也許是這樣的? (這不符合您的期望山坳,但你的描述相符,我認爲)

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])) 
+0

是的,這是輝煌的謝謝你。是否可以爲每個患者選擇x_25a的第一個非NA值?我嘗試了以下方法,但如果第一個值是NA,那麼它會讓整個病人NA。謝謝'df%>%group_by(id)%>%mutate(x_25b = first(x_25a))' – Annemarie

+0

我添加了一個生成索引的摘要版本(從而丟棄了NAs)。這對你有用嗎? – timfaber

+0

是的,太棒了!幸福的日子,非常感謝 – Annemarie