微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用来自原始数据帧的新列中的值重塑 R 数据帧

如何解决使用来自原始数据帧的新列中的值重塑 R 数据帧

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

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

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。