是否有一个R函数通过乘以另一列的值来添加列?
我想进行关联分析,但需要将数据帧转换为正确的格式,该格式只显示事务。1) 如何将“子类别”列乘以“数量”列的数量 2) 如何按订单ID对交易进行分组 我有这个df:是否有一个R函数通过乘以另一列的值来添加列?,r,dataframe,market-basket-analysis,R,Dataframe,Market Basket Analysis,我想进行关联分析,但需要将数据帧转换为正确的格式,该格式只显示事务。1) 如何将“子类别”列乘以“数量”列的数量 2) 如何按订单ID对交易进行分组 我有这个df: `Order ID` `Sub-Category` `Quantity` <chr> <chr> <dbl> 1 CA-2017-152156 Bookcases 2 2 CA-2017-152
`Order ID` `Sub-Category` `Quantity`
<chr> <chr> <dbl>
1 CA-2017-152156 Bookcases 2
2 CA-2017-152156 Chairs 3
3 CA-2017-138688 Labels 2
`Order ID``子类别``数量`
1 CA-2017-152156书架2
2 CA-2017-152156椅子3
3 CA-2017-138688标签2
1) 我想要这个:
`Order ID` `Sub-Category` `Sub-Category2` `Sub-Category3`
<chr> <chr> <chr> <chr>
1 CA-2017-152156 Bookcases Bookcases NULL
2 CA-2017-152156 Chairs Chairs Chairs
3 CA-2017-138688 Labels Labels NULL
`Order ID``Sub-Category``Sub-Category2``Sub-Category3`
1 CA-2017-152156书架书架空
2 CA-2017-152156张椅子
3 CA-2017-138688标签无效
(之后,我想合并相同的订单ID,例如第1行和第2行。您对此有何提示?)
谢谢大家! 以下是对第1点的回答)
以下是对第1点的回答) 要回答问题1)使用
tidyverse
,一种方法是创建一个新列rep
eat every子类别
数量
次数,并以逗号分隔格式将其存储为一个字符串,然后将其分隔为n
列
library(tidyverse)
n <- max(df$Quantity)
df1 <- df %>%
mutate(new = map2_chr(`Sub-Category`, Quantity, ~paste(rep(.x, .y), collapse = ","))) %>%
separate(new, paste("Sub-Category", seq_len(n))) %>%
select(-`Sub-Category`)
df1
# Order ID Quantity Sub-Category 1 Sub-Category 2 Sub-Category 3
#1 CA-2017-152156 2 Bookcases Bookcases <NA>
#2 CA-2017-152156 3 Chairs Chairs Chairs
#3 CA-2017-138688 2 Labels Labels <NA>
要回答问题1)使用tidyverse
,一种方法是创建一个新列rep
eat every子类别
数量
次数,并以逗号分隔格式将其存储为一个字符串,然后将其分隔为n
列
library(tidyverse)
n <- max(df$Quantity)
df1 <- df %>%
mutate(new = map2_chr(`Sub-Category`, Quantity, ~paste(rep(.x, .y), collapse = ","))) %>%
separate(new, paste("Sub-Category", seq_len(n))) %>%
select(-`Sub-Category`)
df1
# Order ID Quantity Sub-Category 1 Sub-Category 2 Sub-Category 3
#1 CA-2017-152156 2 Bookcases Bookcases <NA>
#2 CA-2017-152156 3 Chairs Chairs Chairs
#3 CA-2017-138688 2 Labels Labels <NA>
您说您想要合并相同的订单ID。2的预期输出是什么?您说要组合相同的订单ID。2)的预期产量是多少?
library(tidyverse)
n <- max(df$Quantity)
df1 <- df %>%
mutate(new = map2_chr(`Sub-Category`, Quantity, ~paste(rep(.x, .y), collapse = ","))) %>%
separate(new, paste("Sub-Category", seq_len(n))) %>%
select(-`Sub-Category`)
df1
# Order ID Quantity Sub-Category 1 Sub-Category 2 Sub-Category 3
#1 CA-2017-152156 2 Bookcases Bookcases <NA>
#2 CA-2017-152156 3 Chairs Chairs Chairs
#3 CA-2017-138688 2 Labels Labels <NA>
df1 %>%
group_by(`Order ID`) %>%
summarise_at(vars(starts_with("Sub")), list(~paste(na.omit(.), collapse = ",")))
# A tibble: 2 x 4
# `Order ID` `Sub-Category 1` `Sub-Category 2` `Sub-Category 3`
# <fct> <chr> <chr> <chr>
#1 CA-2017-138688 Labels Labels ""
#2 CA-2017-152156 Bookcases,Chairs Bookcases,Chairs Chairs