수행하려는 각 요약에 대해 서로 다른 그룹화 변수를 사용하여 데이터 프레임을 요약하고 싶습니다. 예를 들어 세 가지 변수 (x1, x2, x3)가 있습니다. 데이터 프레임을 x1로 그룹화하고 해당 그룹의 관측치 수를 얻고 싶지만 x2와 x3에 대해 동일하게 수행하고 싶습니다.
동일한 파이프 블록으로이 작업을 수행하고 싶지만 지금까지 제가 생각 해낸 유일한 해결책은 원하는 각 개별 그룹에 대해 여러 출력을 저장하는 것입니다.
내 데이터 프레임을 재현하려면 :
x1 <- c(0,1,1,2,2,3,3,3,4,4,5,6,6,7,8,9,9,10)
x2 <- c(0,0,1,1,0,1,2,0,0,2,1,0,3,4,2,3,0,3)
x3 <- c(0,1,0,1,2,2,1,3,4,2,4,6,3,3,6,6,9,7)
df <- data.frame(x1,x2,x3)
내 예상 출력은 다음과 같습니다. 여기서 x는 변수의 최소 및 최대 수이고 n_x1-3은 특정 수의 관측치 수이며 해당 변수를 그룹화 변수로 사용합니다.
x n_x1 n_x2 n_x3
1 0 1 7 2
2 1 2 4 3
3 2 2 3 3
4 3 3 3 3
5 4 2 1 2
6 5 1 NA NA
7 6 2 NA 3
8 7 1 NA 1
9 8 1 NA NA
10 9 2 NA 1
11 10 1 NA NA
지금까지 각 변수를 개별적으로 요약하고 그룹화 한 다음 마지막 단계로 모두 결합했습니다.
x1_count <- df %>%
group_by(x1) %>%
summarise(n_x1=n())
x2_count <- df %>%
group_by(x2) %>%
summarise(n_x2=n())
x3_count <- df %>%
group_by(x3) %>%
summarise(n_x3=n())
all_count <- full_join(x1_count, x2_count,
by=c("x1"="x2")) %>%
full_join(., x3_count,
by=c("x1"="x3")) %>%
rename("x"="x1")
여러 데이터 프레임을 출력하고 나중에 함께 결합 할 필요가없는 해결 방법이 있습니까? 더 깨끗하고 우아한 솔루션을 선호합니다.
간단하고 깔끔한 솔루션
library(tidyr)
df %>%
pivot_longer(everything(),names_to="variables",values_to="values") %>%
group_by(variables,values) %>%
summarize(n_x=n()) %>%
ungroup() %>%
pivot_wider(names_from = variables,values_from=n_x)
# A tibble: 11 x 4
values x1 x2 x3
<dbl> <int> <int> <int>
1 0 1 7 2
2 1 2 4 3
3 2 2 3 3
4 3 3 3 3
5 4 2 1 2
6 5 1 NA NA
7 6 2 NA 3
8 7 1 NA 1
9 8 1 NA NA
10 9 2 NA 1
11 10 1 NA NA
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다