基本思想是首先采用“长”格式,然后采用“宽”格式。
这里有一些方法可以做到这一点......
melt
+ dcast
library(data.table) ## or library(reshape2)
dcast(melt(as.data.table(mydf), id.vars = c("am", "group")),
group + variable ~ am, value.var = "value")
recast
(这与熔化+铸造基本相同,但一步完成。)
library(reshape2)
recast(mydf, group + variable ~ am, id.var = c("am", "group"))
gather
+ spread
library(dplyr)
library(tidyr)
mydf %>%
gather(key, value, v1:v4) %>%
spread(am, value)
pivot_longer
+ pivot_wider
library(dplyr)
library(tidyr)
dd %>%
mutate(across(v1:v4, as.character)) %>%
pivot_longer(names_to = "metric", cols=v1:v4) %>%
pivot_wider(id_cols = c(group, metric), values_from = value, names_from=am)
reshape
reshape(cbind(mydf[c(1, 2)], stack(mydf[-c(1, 2)])),
direction = "wide", idvar = c("group", "ind"), timevar = "am")