更改 R 中的数据格式(不想回到 excel)?

Change Data format in R (don't feel like going back to excel)?

需要更改我的格式:

  Lab     Tobacco.Constituent Snus.Avg Snus.StDev HMH.Avg HMH.StDev HGT.Avg
1 labstat    Nicotine [mug/g]    24836        804  2514.0     149.0  5175.0
2 labstat Nornicotine [mug/g]      338          2    70.6       0.8   108.0
3 labstat   Anabasine [mug/g]      106          1     0.0       0.0     0.0
....

收件人:

Lab        Tobacco.Constituent Type Avg   St.Dev
labstat    Nicotine [mug/g]    Snus 24836 804
labstat    Nicotine [mug/g]    HMH  804   2514.0 

……等等……

这是使用 tidyr 中的 pivot_longerpivot_wider 的解决方案:

tidyr::pivot_wider(
  tidyr::pivot_longer(df, cols = 3:7, 
                      names_sep = "\.", 
                      names_to = c("type", "measure")),
names_from = "measure")
#> # A tibble: 9 x 5
#>   Lab     Tobacco.Constituent type      Avg StDev
#>   <chr>   <chr>               <chr>   <dbl> <dbl>
#> 1 labstat Nicotine [mug/g]    Snus  24836   804  
#> 2 labstat Nicotine [mug/g]    HMH    2514   149  
#> 3 labstat Nicotine [mug/g]    HGT    5175    NA  
#> 4 labstat Nornicotine [mug/g] Snus    338     2  
#> 5 labstat Nornicotine [mug/g] HMH      70.6   0.8
#> 6 labstat Nornicotine [mug/g] HGT     108    NA  
#> 7 labstat Anabasine [mug/g]   Snus    106     1  
#> 8 labstat Anabasine [mug/g]   HMH       0     0  
#> 9 labstat Anabasine [mug/g]   HGT       0    NA

数据

df <- structure(list(Lab = c("labstat", "labstat", "labstat"), 
                     Tobacco.Constituent = c("Nicotine [mug/g]", 
"Nornicotine [mug/g]", "Anabasine [mug/g]"), Snus.Avg = c(24836L, 
338L, 106L), Snus.StDev = c(804L, 2L, 1L), HMH.Avg = c(2514, 
70.6, 0), HMH.StDev = c(149, 0.8, 0), HGT.Avg = c(5175, 108, 
0)), class = "data.frame", row.names = c("1", "2", "3"))

df
#>       Lab Tobacco.Constituent Snus.Avg Snus.StDev HMH.Avg HMH.StDev HGT.Avg
#> 1 labstat    Nicotine [mug/g]    24836        804  2514.0     149.0    5175
#> 2 labstat Nornicotine [mug/g]      338          2    70.6       0.8     108
#> 3 labstat   Anabasine [mug/g]      106          1     0.0       0.0       0

reprex package (v0.3.0)

于 2020-08-07 创建