未告知时在空白处单独拆分

Separate splitting on whitespace when not told to

我的数据中有一个由 |#| 分隔的变量,该数据是字母数字的混合并且始终包含白色 space。

在 TidyR 中使用分隔符,我将我的 sep 指定为“|#|”,但是当进程运行时,它将变量拆分为白色 space 以及指定的分隔符。

如何强制此命令忽略白色 space 并仅根据我指定的内容进行拆分?

我的代码如下:

library(tidyr)
Tasks2 <- Tasks2 %>%
  mutate(Task_Filter = paste(Task_Type_ID)) %>%
  separate('Task_Filter', paste("Task_Filter", 1:4, sep= "|#|"), extra = "drop")

一个值被拆分的例子是

4 |#| NB quote referred |#| 0000 0000 |#| 20/01/2021 |#| Connect System

我选择了|#|因为那是源数据中存在的内容,所以所有条目都具有相同的格式。我希望这个例子中的 4 个新变量是 4, 注意引用引用, 0000 0000, 2021 年 1 月

但我得到的是: 4个 注意事项 引用 转介

您可以 separate 不仅将竖线而且将空格也纳入模式:

library(tidyr)
separate(df, col = "x", into = paste("Task_Filter", 1:5), sep = "\s\|#\|\s")
  Task_Filter 1     Task_Filter 2 Task_Filter 3 Task_Filter 4  Task_Filter 5
1             4 NB quote referred     0000 0000    20/01/2021 Connect System

数据:

df <- data.frame(
          x = "4 |#| NB quote referred |#| 0000 0000 |#| 20/01/2021 |#| Connect System")

这是另一种解决方案。我不确定这是否需要。请告诉我。 如果不知道要分隔的列数 cSplit 非常方便。

library(splitstackshape)

df1 <- df %>% 
  cSplit('x', '|#|') %>% 
  select(everything()[c(TRUE, FALSE)])

输出:

   x_1               x_3       x_5        x_7            x_9
1:   4 NB quote referred 0000 0000 20/01/2021 Connect System