【问题标题】:Reshape R dataframe with values in new columns from the original dataframe使用原始数据框中的新列中的值重塑 R 数据框
【发布时间】:2021-08-12 19:57:48
【问题描述】:

我有以下数据框“饮食”:

ID    Food.group    grams    day    weight
A       12            200     1       60
A       13            300     1       60
A       14            100     1       60
A       15             50     1       60
A       16            200     1       60
A       17            250     1       60
B       13            300     2       73
B       14            140     2       73
B       15            345     2       73
B       17            350     2       73
C       12            120     6       66
C       13            100     6       66
C       16            200     6       66

我需要创建一个新的数据框,其中每个食物组作为一个新列,以克为单位的值作为它们的值,所有这些都按 ID 组织。其他列具有每个 ID 的唯一值,并且可以成为一行。像这样的:

ID    12    13    14    15    16    17    day    weight
A     200   300   100   50    200   250    1      60
B     N/A   300   140   345   N/A   350    2      73
C     120   100   N/A   N/A   200   N/A    6      66

我尝试使用Diet2 <- reshape(Diet, idvar="ID", timevar="Food.group", direction="wide")

但我明白了:

ID   12.grams   12.day   12.weight   13.grams   13.day    13.weight
A      200       1         60         300         1         60
B      N/A       N/A       N/A        300         2         73
C      120       6         66         100         6         66

等等。如何获得正确的数据框形状?

【问题讨论】:

    标签: r dataframe reshape


    【解决方案1】:

    您可以使用{tidyr} 中更新的pivot_wider()

    library(dplyr) 
    library(tidyr)
    
    diet %>% 
       pivot_wider(id_cols = c("ID","day","weight")
                 , names_from = "Food.group"
                 , values_from = "grams")
    

    这会给你:

    # A tibble: 3 x 9
      ID      day weight  `12`  `13`  `14`  `15`  `16`  `17`
      <chr> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    1 A         1     60   200   300   100    50   200   250
    2 B         2     73    NA   300   140   345    NA   350
    3 C         6     66   120   100    NA    NA   200    NA
    

    【讨论】:

    • 很高兴它让你继续前进。一切顺利,纳蒂斯。
    猜你喜欢
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多