如何解决使用来自原始数据帧的新列中的值重塑 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 举报,一经查实,本站将立刻删除。