두 가지 범주의 데이터간에 연속 변수를 기반으로 데이터 프레임을 정렬하려고합니다. 특히, 연속 변수를 정렬 (내림차순)하지만 비슷한 유형의 변수를 함께 보존하려고합니다. 예를 들면 다음과 같습니다.split-apply-combine : 여러 변수 정렬 및 그룹화 R
pets <- data.frame(animal = c("dog", "dog", "dog", "cat", "cat", "fish", "fish", "fish"),
breed = c("retriever", "husky", "husky", "grey", "white", "guppy", "betta", "betta"),
count = c(4, 3, 7, 8, 9, 2, 12, 1))
지금 데이터 프레임은 정렬되지 않습니다. 가장 높은 평균이 count
인 breeds
이 먼저 나타나지만 모두 breed
(및 animal
초)가 함께 그룹화되도록 정렬하려고합니다. breed
을 기준으로 프레임을 주문하면 count
의 올바른 순서를 잃게되고 그 반대의 경우도 마찬가지입니다. 두 가지를 모두 시도해도 :
pets[with(pets, order(breed, -count)), ]
출력이 제대로 정렬되지 않습니다. split-apply-combine tutorials을 살펴 보았지만 내 데이터 에서처럼 두 그룹이 아닌 한 그룹의 데이터를 유지하려고 시도한 그룹 만 찾을 수있었습니다.
는 지금이 내가 가진 것 중에 최고입니다.
가 나는 그들이에가는 올바른 순서를 가지고,cat.white cat.grey dog.husky dog.retriever fish.betta fish.guppy
9.0 8.0 5.0 4.0 6.5 2.0
물론 반환
split_pets <- split(pets, pets$animal)
unlist(lapply(split_pets, function(x) sort(with(x, tapply(count, breed, mean)), decreasing = TRUE)))
어느하지만 난 몰라 실제로 수단에 대해서조차, 나는 이것을 원본 데이터 프레임을 기준으로 정렬해야합니다. 다음으로 품종에 따라 토끼를 다시 채 웁니다.하지만 목록 목록의 데이터 프레임 열을 기준으로 정렬 할 것입니다. 너무 복잡해 보입니다. 나는 또한 order
을 보내고 dplyr
에서 group_by()
으로 파이핑을 시도했지만 그게 지금보다 더 나을 수는 없다.
도움 주셔서 감사합니다.
이 솔루션은 내가 사용했던 솔루션 경로보다 훨씬 우아합니다. 그러나이 정확한 코드를 실행하면 오류가 발생합니다. '오류 :'에 의해 '조인 열'동물 ','품종 '이 LHS에서 누락 됨 줄 단위로 실행 중입니다. 나타납니다. right_join() (으)로 올라 오세요. – AcademicDialysis
마지막 코멘트에서 제기 된 버그가 해결되었습니다. 문제는'plyr'가 내 네임 스페이스에서'dplyr' 전에로드되어'group_by'에서 나온 각 그룹에 대해 하나가 아닌'mean' 결과가 나온다는 것입니다. 여기에 비틀 거리다 : https://stackoverflow.com/questions/26923862/why-are-my-dplyr-group-by-summarize-not-working-properly-name-collision-with – AcademicDialysis