【问题标题】:reshape untidy data frame, spreading rows to columns names [duplicate]重塑凌乱的数据框,将行扩展到列名[重复]
【发布时间】:2020-11-16 09:39:33
【问题描述】:

已搜索线程,但无法理解可以解决我拥有的数据框问题的解决方案。

我当前的数据框(df):

# A tibble: 8 x 29
  `Athlete`       Monday...2 Tuesday...3 Wednesday...4 Thursday...5 Friday...6 Saturday...7 Sunday...8
  <chr>           <chr>      <chr>       <chr>         <chr>        <chr>      <chr>        <chr>     
1 Date            29/06/2020 30/06/2020  43837.0       43868.0      43897.0    43928.0      43958.0   
2 HR              47.0       54.0        51.0          56.0         59.0       NA           NA        
3 HRV             171.0      91.0        127.0         99.0         77.0       NA           NA        
4 Sleep Duration  9.11       7.12        8.59          7.15         8.32       NA           NA        
5 Sleep Efficien~ 92.0       94.0        89.0          90.0         90.0       NA           NA        
6 Recovery Score  98.0       66.0        96.0          72.0         46.0       NA           NA        
7 Life Stress     NO         NO          NO            NO           NO         NA           NA        
8 Sick            NO         NO          NO            NO           NO         NA           NA

已尝试使用扩展和更广泛的旋转,但我知道需要额外的功能才能获得超出我对 R 的理解水平的所需输出。

我需要你吗

期望的输出:

 Date        HR       HRV      Sleep Duration   Sleep Efficiency   Recovery Score   Life Stress  Sick 
   29/06/2020    47.0      171.0       9.11
    30/06/2020   54.0      91.0        7.12
    43837.0      51.0      127.0       8.59
    43868.0      56.0      99.0        7.15
    43897.0      59.0      77.0        8.32
    43928.0       NA       NA           NA
    43958.0       NA       NA           NA

等等

谢谢

【问题讨论】:

标签: r reshape2


【解决方案1】:

在 Base R 中你会做:

type.convert(setNames(data.frame(t(df[-1]), row.names = NULL), df[,1]))

        Date HR HRV Sleep Duration Sleep Efficien~ Recovery Score Life Stress Sick
1 29/06/2020 47 171           9.11              92             98          NO   NO
2 30/06/2020 54  91           7.12              94             66          NO   NO
3    43837.0 51 127           8.59              89             96          NO   NO
4    43868.0 56  99           7.15              90             72          NO   NO
5    43897.0 59  77           8.32              90             46          NO   NO
6      43928 NA  NA             NA              NA             NA        <NA> <NA>
7      43958 NA  NA             NA              NA             NA        <NA> <NA>

【讨论】:

  • 有效,但列标题合并为一列 c("Date", "HR", "HRV", "Sleep Duration", "Sleep Efficiency", "Recovery Score", "Life Stress ", "生病")
  • @BigBird 我看到你正在使用 tibble。将上面代码中的df[,1]替换为df[,1,drop = TRUE]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 2022-12-05
  • 2023-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多