问题描述
努力拼写这个字眼,因此无法通过搜索找到不错的结果。输入示例:
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
最初使用了split(),但遇到了字符串值问题。切换到ivot_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