reshape2 - 在类似于dcast的tidyr中,是否可以在多个列中使用扩展?

  显示原文与译文双语对照的内容
0 0

我有以下哑元数据:

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

时间:原作者:1个回答

0 0

试试

 library(dplyr)
 library(tidyr)
 sdt %>%
 mutate(Prod_Coun=paste(Product, Country, sep="_")) %>%
 select(-Product, -Country)%>% 
 spread(Prod_Coun, value)%>%
 head(2)
 #  Year      A_AI       B_EI
 #1 1990 0.7878674  0.2486044
 #2 1991 0.2343285 -1.1694878

uPDATE

使用 unite作为批注者@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
原作者:
...