【发布时间】:2021-08-26 13:05:58
【问题描述】:
[编辑:反应很好;谢谢你。不幸的是,我过度简化了我的代表。我的实际数据有时在括号内有破折号。此外,如前所述,有时有两个以上的变体。我正在相应地编辑我的代表。]
我正在整理给定制造商的产品价格表。模型有变体,同一模型的每个变体价格相同,因此原始表格创建者仅列出了一次价格,并使用内部括号替代方案来区分模型。例如。 “1000-a”和“1000-b”是同一型号的变体,在价目表上标为“1000-a(b)”。我想在自己的行中列出每个模型。
代表:
prices <- data.frame(
model = c("1000-a(-b)", "2000-a(b)", "150-L(R)", "TX-a(-b)-J", "350-LX(-S)(-AB)"),
price = seq(1999,5999,1000)
)
> prices
model price
1 1000-a(-b) 1999
2 2000-a(b) 2999
3 150-L(R) 3999
4 TX-a(-b)-J 4999
5 350-LX(-S)(-AB) 5999
有时差异是单个字符,有时是多个。有时它们位于型号的末尾,有时位于中间。 我想要产生这个的代码:
> desired_prices
model price
1 1000-a 1999
2 1000-b 1999
3 2000-a 2999
4 2000-b 2999
5 150-L 3999
6 150-R 3999
7 TX-a-J 4999
8 TX-b-J 4999
9 350-LX 5999
10 350-S 5999
11 350-AB 5999
这似乎与问题 Split comma-separated strings in a column into separate rows 有关,但在我的情况下,值不是逗号分隔的。
我如何制作这种拆分/扩展? tidyverse 解决方案是首选但不是必需的。
【问题讨论】:
-
括号中是否只有一个替代方案,还是可以有多个?喜欢
150-lx(sn)(av)(px)? -
@AllanCameron,是的,有一些倍数,尽管数量很少,我愿意单独处理。
-
您正在将
TXa(-b)-J转换为TX-a-J或TX-b-J。这对吗?很难识别一个模式...应该是TX-a(-b)-J? -
@MartinGal 是的,谢谢。 (reprex 现已修复)
标签: r data-munging