r - 具有多个输出列/值的 R 数据从长到宽
问题描述
挣扎于如何表达这一点,所以我没有通过搜索找到很好的结果。示例输入:
cust_id make part price color
1 jeep wheel 10 gray
1 jeep door 5 blue
1 jeep seat 20 brown
2 ford wheel 12 gray
2 ford door 8 red
2 ford seat 25 brown
期望的输出:
cust_ID make wheel_price wheel_color door_price door_color seat_price seat_color
1 jeep 10 gray 5 blue 20 brown
2 ford 12 gray 8 red 25 brown
最初使用的是 spread() 但遇到了字符串值的问题。切换到 pivot_wider() 但仍然无法为每个唯一部分获取多个输出列/值。提前致谢!
解决方案
你必须使用pivot_wider:
library(dplyr)
library(tidyr)
df %>%
tidyr::pivot_wider(names_from = part, names_glue = "{part}_{.value}", values_from = c(price, color)) %>%
dplyr::select(1, 2, sort(current_vars()))
cust_id make door_color door_price seat_color seat_price wheel_color wheel_price
<int> <chr> <chr> <int> <chr> <int> <chr> <int>
1 1 jeep blue 5 brown 20 gray 10
2 2 ford red 8 brown 25 gray 12
推荐阅读
- mysql - Mysql在提供后从下一行开始选择接下来的1000行
- android - MPAndroidChart 如何将信息视图添加到轴?
- ios - 访问字典数组的嵌套数组
- javascript - 使用 axios POST 时出现错误
- ssl - 从 conda 提示符安装任何软件包时出现 SSL 错误
- c# - 设置相对于最后一行文本的光标位置 | C# 控制台应用程序
- java - Android MVP - 我应该从哪里阅读 Textview?
- ios - UIScrollView + LargeTitle (iOS 11) - 滚动到顶部并显示大标题
- java - 数组变量基本类型
- html - 限制每个会话的 CSS 动画