如何使用多个旧列的值创建新列?
How can I create new columns with the values of multiple old columns?
第一次发帖,如果有什么不对请告诉我,我在 R 中有一个按以下方式划分的数据框:
location
type
amount
produt
a
x
10
p1
a
x
20
p2
b
x
50
p5
b
y
100
p10
最后我需要将位置分组到一行中,并使“类型”列成为具有“产品”和“金额”列值的新列,就像这样:
location
A_P_X
A_P_Y
a
p1_10,p2_20
b
p5_50
p10_100
我尝试使用一种热编码来创建新列,但在尝试根据原始“类型”值填充新列时,我 运行 遇到了问题
library(tidyverse)
df %>%
unite("val", produt:amount, sep = "_") %>%
mutate(type = paste0("A_P_", toupper(type))) %>%
pivot_wider(names_from = type, values_from = val,
values_fn = list(val = ~paste(., collapse = ", ")))
结果
# A tibble: 2 x 3
location A_P_X A_P_Y
<chr> <chr> <chr>
1 a p1_10, p2_20 NA
2 b p5_50 p10_100
第一次发帖,如果有什么不对请告诉我,我在 R 中有一个按以下方式划分的数据框:
location | type | amount | produt |
---|---|---|---|
a | x | 10 | p1 |
a | x | 20 | p2 |
b | x | 50 | p5 |
b | y | 100 | p10 |
最后我需要将位置分组到一行中,并使“类型”列成为具有“产品”和“金额”列值的新列,就像这样:
location | A_P_X | A_P_Y |
---|---|---|
a | p1_10,p2_20 | |
b | p5_50 | p10_100 |
我尝试使用一种热编码来创建新列,但在尝试根据原始“类型”值填充新列时,我 运行 遇到了问题
library(tidyverse)
df %>%
unite("val", produt:amount, sep = "_") %>%
mutate(type = paste0("A_P_", toupper(type))) %>%
pivot_wider(names_from = type, values_from = val,
values_fn = list(val = ~paste(., collapse = ", ")))
结果
# A tibble: 2 x 3
location A_P_X A_P_Y
<chr> <chr> <chr>
1 a p1_10, p2_20 NA
2 b p5_50 p10_100