반응형
dcast와 유사한 깔끔한 여러 열에 스프레드를 사용할 수 있습니까?
다음과 같은 더미 데이터가 있습니다.
library(dplyr)
library(tidyr)
library(reshape2)
dt <- expand.grid(Year = 1990:2014, Product=LETTERS[1:8], Country = paste0(LETTERS, "I")) %>% select(Product, Country, Year)
dt$value <- rnorm(nrow(dt))
두 가지 제품-국가 조합을 선택합니다.
sdt <- dt %>% filter((Product == "A" & Country == "AI") | (Product == "B" & Country =="EI"))
각 조합에 대한 값을 나란히보고 싶습니다. 나는 이것을 할 수 있습니다 dcast
:
sdt %>% dcast(Year ~ Product + Country)
spread
패키지 tidyr 에서 이것을 할 수 있습니까?
하나의 옵션은 '제품'과로 '나라'열을 결합하여 새로운 'Prod_Count'을 만들 것 paste
의로 그 열을 제거 select
'폭'사용하기 '긴'에서와 모양 변경 spread
에서 tidyr
.
library(dplyr)
library(tidyr)
sdt %>%
mutate(Prod_Count=paste(Product, Country, sep="_")) %>%
select(-Product, -Country)%>%
spread(Prod_Count, value)%>%
head(2)
# Year A_AI B_EI
#1 1990 0.7878674 0.2486044
#2 1991 0.2343285 -1.1694878
또는 unite
from tidyr
(@beetroot의 의견에서) 을 사용하여 몇 단계를 피하고 이전과 같이 모양을 변경할 수 있습니다 .
sdt%>%
unite(Prod_Count, Product,Country) %>%
spread(Prod_Count, value)%>%
head(2)
# Year A_AI B_EI
# 1 1990 0.7878674 0.2486044
# 2 1991 0.2343285 -1.1694878
pivot_wider()
tidyr 버전 1.0.0에 도입 된 새로운 함수를 사용하면 한 번의 함수 호출로이 작업을 수행 할 수 있습니다.
pivot_wider()
(상대 :) pivot_longer()
는 spread()
. 그러나 여러 키 / 이름 열 (및 / 또는 여러 값 열) 사용과 같은 추가 기능을 제공합니다. 이를 names_from
위해 새 변수의 이름을 가져 오는 열을 나타내는 인수 는 둘 이상의 열 이름 (여기 Product
및 Country
)을 사용할 수 있습니다.
library("tidyr")
sdt %>%
pivot_wider(id_cols = Year,
names_from = c(Product, Country)) %>%
head(2)
#> # A tibble: 2 x 3
#> Year A_AI B_EI
#> <int> <dbl> <dbl>
#> 1 1990 -2.08 -0.113
#> 2 1991 -1.02 -0.0546
반응형
'programing tip' 카테고리의 다른 글
Android SDK Manager의 Google 웹 드라이버는 무엇입니까? (0) | 2020.12.02 |
---|---|
패키지 종속성을 자동으로 설치하도록 CRAN에 지시하는 방법은 무엇입니까? (0) | 2020.12.02 |
.net에서 FFmpeg를 사용하십니까? (0) | 2020.12.02 |
Gradle 및 다중 프로젝트 구조 (0) | 2020.12.02 |
Android Lollipop에서 Notification.Builder.setSmallIcon으로 설정된 아이콘이 흰색 사각형으로 표시되는 이유는 무엇입니까? (0) | 2020.12.02 |