【问题标题】:Duplicate rows based on splitting condition根据拆分条件复制行
【发布时间】:2020-01-22 18:45:25
【问题描述】:

我想在 SQL 或 Excel 中根据拆分条件复制行。是否有捷径可寻?下面列出了我期望的输出示例。

structure(list(key = 1:3, Sales_channel = structure(c(1L, 1L, 
2L), .Label = c("online", "shop"), class = "factor"), Product = structure(3:1, .Label = c("bus & boat", 
"bus & cinema", "bus & zoo"), class = "factor"), quantity = c(1, 
2, 1)), class = "data.frame", row.names = c(NA, -3L))

我想得到以下内容:

  key Sales_channel quantity values
1   1        online        1    bus
2   1        online        1    zoo
3   2        online        2    bus
4   2        online        2 cinema
5   3          shop        1   boat
6   3          shop        1    bus

实际上,我想用“&”分割每个字符串,然后旋转表格。

【问题讨论】:

  • 您可以使用 Power Query 在 Excel 中轻松完成。拆分 Product 列,然后 UNPIVOT 这两列。

标签: sql r excel


【解决方案1】:

尝试将base R 与tidyverse 结合使用。

cbind(dat,t(sapply(str_split(dat$Product, " & "), unlist))) %>% 
gather(newProd, values,`1`,`2`) %>% 
arrange(key, values)

首先,我们将字符串从list 格式拆分为矩阵格式,将bind 逐列拆分为原始数据dat。然后我们将新列变成 1 长列,并确保排序正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2017-06-17
    • 2010-10-31
    • 1970-01-01
    • 2018-03-03
    • 2018-07-11
    • 2017-08-20
    相关资源
    最近更新 更多