根据新字符串将 R 中的列的一部分拆分为两列。我应该旋转吗?

问题描述 投票:0回答:1

My Dataframe 嗨,大家好, 所以我想将 BID_TYPE 变为 BANDAVAIL 的列部分移动到新列中。 这样每个价格区间都对应于每个可用区间。 有没有好的方法可以做到这一点?

提前致谢

我尝试了几种使用枢轴函数的方法,但因为每个价格和波段都有不同的数字,所以它对我不起作用。

我还尝试过过滤数据集然后合并,它会创建所有可能的组合。

r merge split pivot tidyverse
1个回答
0
投票

以下示例将

BID_TYPE
列拆分为两列,一列包含文本,一列包含数字。该数字对于 PRICEBAND 和相应的 BANDAVAIL 数字之间的匹配似乎很有用。

使用正则表达式将字符数据拆分为数字和字母

library(tidyverse)
data.frame(BID_TYPE = c("PRICEBAND1", "PRICEBAND2", "PRICEBAND3",
                        "BANDAVAIL1", "BANDAVAIL2", "BANDAVAIL3"),
           BID_PRICES = 1:6) |>
  separate(BID_TYPE, c("TYPE", "NUM"), sep = "(?<=[A-Za-z])(?=[0-9])") |>
  pivot_wider(names_from = TYPE, values_from = BID_PRICES)

结果

# A tibble: 3 × 3
  NUM   PRICEBAND BANDAVAIL
  <chr>     <int>     <int>
1 1             1         4
2 2             2         5
3 3             3         6
© www.soinside.com 2019 - 2024. All rights reserved.