이것은 매우 간단하며 솔루션이 있지만 열이 많아 시간이 많이 걸립니다. 다른 솔루션을 살펴 보았지만, 항상 약간 다른 (한 열을 집계하고 모든 열을 변경하는 등) 항상있었습니다. SQL에서 나는 select PAT_ID, max(X), max(Y), max(Z) from table_name group by PAT_ID
을 할 것입니다.롤업 레코드, 각 열의 최대 수, group_by R
dt <- data.frame(
PAT_ID = c('P','P','P','A','A','A'),
X = c(1,NA,NA, 1,NA,NA),
Y = c(NA,2,NA,NA,1,NA),
Z = c(NA,NA,1,NA,NA,0)
)
이 결과 그래서 요약 한 후 결합 :
내가 (하지만 더 열)과 같습니다 데이터 세트가
results_X <-dt %>%
group_by(PAT_ID) %>%
summarise(X = max(X, na.rm=TRUE))
results_Y <-dt %>%
group_by(PAT_ID) %>%
summarise(Y = max(Y, na.rm=TRUE))
results_Z <-dt %>%
group_by(PAT_ID) %>%
summarise(Z = max(Z, na.rm=TRUE))
resulted <- left_join(results_X, results_Y)
resulted <- left_join(resulted, results_Z)
내 출력이를 "롤 - PAT_ID 당 각 열의 최대 값 인 "최대"레코드 수 :
myresult <- data.frame(
PAT_ID = c('P','A'),
X = c(1,1),
Y = c(2,1),
Z = c(1,0)
)
이렇게하는 것이 더 좋은 방법이라고 확신합니다. 하지만 어떻게?
summarise_each (funs (max (., na.rm = TRUE))) ... 감사합니다! 나는 summarise_each가 변수에 의해 그룹에 적용되지 않는다는 것을 깨닫지 못했습니다. 구문에 대한 작은 편집을 알리는 것 – soporific
@soporific'? summarise_each' 도움말 페이지의 메시지에 유의하십시오 : 미래에 mutate_each() 및 summarise_each()는 더 많은 기능을 가진 가족을 위해 더 이상 사용되지 않습니다 : mutate_all() , mutate_at(), mutate_if(), summarise_all(), summarise_at() 및 summarise_if() "를 참조하십시오. 그래서'summarize_all()'을 사용했습니다. – MrFlick
오 고마워요! dplyr을 다시 설치하고 세션을 다시 시작하여 해당 fn을 가져와야했습니다. 새로운 기능! :) – soporific