4
我有以下data.frame移调在dplyr
df = structure(list(HEADER = c("HOME_TRPM", "AWAY_TRPM", "HOME_TEAM","AWAY_TEAM"),
price = c("0.863104076023855", "-0.845186446996287","CHA", "NOP")),
.Names = c("HEADER", "price"), row.names = c(NA, 4L), class = "data.frame")
df
#> HEADER price
#> 1 HOME_TRPM 0.863104076023855
#> 2 AWAY_TRPM -0.845186446996287
#> 3 HOME_TEAM CHA
#> 4 AWAY_TEAM NOP
,我要转。如何在不使用t()的情况下在dplyr中执行此操作?我试图
df %>% tidyr::spread(HEADER , price)
,但它没有给出一个平面结构,而是做到这一点:
structure(list(AWAY_TEAM = c(NA, NA, NA, "NOP"),
AWAY_TRPM = c(NA, "-0.845186446996287", NA, NA),
HOME_TEAM = c(NA, NA, "CHA", NA),
HOME_TRPM = c("0.863104076023855", NA, NA, NA)),
.Names = c("AWAY_TEAM", "AWAY_TRPM", "HOME_TEAM", "HOME_TRPM"),
class = "data.frame", row.names = c(NA, 4L))
产生的data.frame应该是这样的:
structure(list(HOME_TRPM = "0.863104076023855",
AWAY_TRPM = "-0.845186446996287",
HOME_TEAM = "CHA",
AWAY_TEAM = "NOP"),
.Names = c("HOME_TRPM", "AWAY_TRPM", "HOME_TEAM", "AWAY_TEAM"),
row.names = c(NA, -1L), class = "data.frame"))
'do.call(rbind,c(df))'将转置而不使用't()'。 –
可能需要像'setNames(do.call(data.frame,as.list(DF [[2]])),DF [[1]])这样的结果,这在dplyr中是不可能的,设计围绕数据清理。 – Frank
@RichardScriven这看起来与t()相同,它给出了与期望输出不同的结构。 – geodex