一个从长到宽的问题或其他问题

A long to wide question or something else

一个关于从长到宽的快速问题。我有一个数据

structure(list(Var.name = c("UPKTMPT", "UPKLDT", "UPKLTM", "UPKSHPYN", 
"UPKND", "UPKNDSP", "UPKSTDT", "UPKVOL", "UPKSHPDT", "UPKLYN", 
"UPKSPTM", "UPKSTTM", "UPKSPDT", "UPKLSTYN", "EXCCYN", "EXYN", 
"EXDT", "EXSTTM", "EXSPTM", "EXREAS", "EXRSAE2", "EXRSOTH", "EXDSLVL", 
"EXLOTNO", "EXVOLA", "EXDOSA", "EXHELD", "EXHELDSP"), EDCT = c("T568", 
"T568", "T568", "T568", "T568", "T568", "T568", "T568", "T568", 
"T568", "T568", "T568", "T568", "T568", "T492", "T492", "T492", 
"T492", "T492", "T492", "T492", "T492", "T492", "T492", "T492", 
"T492", "T492", "T492")), row.names = c(NA, 28L), class = "data.frame")

如何将列名作为 EDCT 中的每个值。看起来像这样:

我很困惑。如果我需要使用 reshape 使其变长变宽,它需要 idvar amd timvar,而我没有。我应该怎么办?这是一个从长到宽的问题吗?

您在找这样的东西吗?

df %>%
  tidyr::pivot_wider(names_from = EDCT, values_from = Var.name) %>% 
  tidyr::unnest(cols = everything())
#> # A tibble: 14 x 2
#>    T568     T492    
#>    <chr>    <chr>   
#>  1 UPKTMPT  EXCCYN  
#>  2 UPKLDT   EXYN    
#>  3 UPKLTM   EXDT    
#>  4 UPKSHPYN EXSTTM  
#>  5 UPKND    EXSPTM  
#>  6 UPKNDSP  EXREAS  
#>  7 UPKSTDT  EXRSAE2 
#>  8 UPKVOL   EXRSOTH 
#>  9 UPKSHPDT EXDSLVL 
#> 10 UPKLYN   EXLOTNO 
#> 11 UPKSPTM  EXVOLA  
#> 12 UPKSTTM  EXDOSA  
#> 13 UPKSPDT  EXHELD  
#> 14 UPKLSTYN EXHELDSP

或者,作为基数 R 中的 one-liner,

as.data.frame(lapply(split(df, df$EDCT), function(x) x$Var.name))
#>        T492     T568
#> 1    EXCCYN  UPKTMPT
#> 2      EXYN   UPKLDT
#> 3      EXDT   UPKLTM
#> 4    EXSTTM UPKSHPYN
#> 5    EXSPTM    UPKND
#> 6    EXREAS  UPKNDSP
#> 7   EXRSAE2  UPKSTDT
#> 8   EXRSOTH   UPKVOL
#> 9   EXDSLVL UPKSHPDT
#> 10  EXLOTNO   UPKLYN
#> 11   EXVOLA  UPKSPTM
#> 12   EXDOSA  UPKSTTM
#> 13   EXHELD  UPKSPDT
#> 14 EXHELDSP UPKLSTYN

使用基数 R:

newdf = character()
for(i in unique(df$EDCT)){
  newdf = cbind(newdf, df$Var.name[df$EDCT==i])  
}

base R中,我们可以使用unstack

unstack(df1, Var.name ~ EDCT)

-输出

#       T492     T568
#1    EXCCYN  UPKTMPT
#2      EXYN   UPKLDT
#3      EXDT   UPKLTM
#4    EXSTTM UPKSHPYN
#5    EXSPTM    UPKND
#6    EXREAS  UPKNDSP
#7   EXRSAE2  UPKSTDT
#8   EXRSOTH   UPKVOL
#9   EXDSLVL UPKSHPDT
#10  EXLOTNO   UPKLYN
#11   EXVOLA  UPKSPTM
#12   EXDOSA  UPKSTTM
#13   EXHELD  UPKSPDT
#14 EXHELDSP UPKLSTYN