2017-04-20 1 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)) 

내가 귀하의 전문 지식에 매우 감사하게 될 것입니다, Annemarie bw이다

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

색인을 생성하는 요약본을 추가했습니다. 그게 너에게 유용한가요? – timfaber

+0

예, 훌륭합니다! 행복한 일, 정말 고마워. – Annemarie

관련 문제