r - 如何对 R 中每一行的一组变体进行变异?

标签 r dplyr

我有以下数据:

| parent_sku |    sku   | stock_status | regular_price | tax_class | 
|:----------:|:--------:|:------------:|:-------------:|:---------:|
| ABBBOA01   | ABBBOA01 | instock      | 1299          | parent    | 
| ABBBOA03   | ABBBOA03 | instock      | 1299          | parent    | 
| ABBBOA02   | ABBBOA02 | instock      | 1299          | parent    | 
| ABBBOA04   | ABBBOA04 | instock      | 1299          | parent    | 
我想为每个 parent_sku 变异四个变体, M , L , XLXXL .比如上面的数据应该转化为:
| parent_sku |    sku   | stock_status | regular_price | tax_class |    attribute_size   |
|:----------:|:--------:|:------------:|:-------------:|:---------:|:-------------------:|
| ABBBOA01   | ABBBOA01 | instock      | 1299          | parent    | M                   |
| ABBBOA01   | ABBBOA01 | instock      | 1299          | parent    | X                   |
| ABBBOA01   | ABBBOA01 | instock      | 1299          | parent    | XL                  |
| ABBBOA01   | ABBBOA01 | instock      | 1299          | parent    | XXL                 |
| ABBBOA03   | ABBBOA03 | instock      | 1299          | parent    | M                   |
| ABBBOA03   | ABBBOA03 | instock      | 1299          | parent    | L                   |
| ABBBOA03   | ABBBOA03 | instock      | 1299          | parent    | XL                  |
...
and so on
我试过做这样的事情:
data %>% group_by(parent_sku) %>%
  rowwise() %>% 
  mutate(attribute_size = 'M') %>%
  mutate(attribute_size = 'L') %>%
  mutate(attribute_size = 'XL') %>%
  mutate(attribute_size = 'XXL')
但这不起作用。

最佳答案

一种方法是将所有尺寸添加为包含尺寸向量的列表列。然后使用 unnest_longer()将其展开成行。

library(dplyr)
library(tidyr)

# this should work with all the columns
data <- tibble(parent_sku = paste0("ABBBOA0", 1:4),
               stock_status = rep("instock", 4))

sizes <- c("M", "L", "XL", "XXL")

data %>% 
  mutate(attribute_size = list(sizes)) %>% 
  unnest_longer(attribute_size)
这给了你扩展......
# A tibble: 16 x 3
   parent_sku stock_status attribute_size
   <chr>      <chr>        <chr>         
 1 ABBBOA01   instock      M             
 2 ABBBOA01   instock      L             
 3 ABBBOA01   instock      XL            
 4 ABBBOA01   instock      XXL           
 5 ABBBOA02   instock      M             
 6 ABBBOA02   instock      L             
 7 ABBBOA02   instock      XL            
 8 ABBBOA02   instock      XXL           
 9 ABBBOA03   instock      M             
10 ABBBOA03   instock      L             
11 ABBBOA03   instock      XL            
12 ABBBOA03   instock      XXL           
13 ABBBOA04   instock      M             
14 ABBBOA04   instock      L             
15 ABBBOA04   instock      XL            
16 ABBBOA04   instock      XXL  

关于r - 如何对 R 中每一行的一组变体进行变异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65938808/

相关文章:

r - 使用 Ra 的 R 代码 JIT

r - purrr:map 和 glm - 通话问题

r - 在 R 中使用 dplyr 进行条件平均

返回分组数据帧 R 中最大值的对应变量

R - 需要有关多状态马尔可夫和 block 引导的帮助

r - 保存在 Shiny 的应用程序中收集的 react 数据

r - 在chrome中将html保存为pdf

r - dplyr::rename_all & dplyr::if_else

r - 如何使用 tidyverse 计算行和

javascript - Shiny :从自己的 JS 脚本访问输入对象