【发布时间】:2021-12-30 16:33:19
【问题描述】:
尝试提取分号之间的数据并将该数据放入新列中。
这是一些数据
df <- data.frame(data = c("a;;c;d", "a;b;;d","a;;;d","a;b;;;"), num =c(1:4))
这是我到目前为止从 S.O. 收集到的内容
res <- df %>%
mutate(
colA = str_extract(data, "^[^;]*(?=;)"),
colB = str_extract(data, "(?<=;)[^;]*(?=;)"),
colC = str_extract(data, "(?<=;)(?<=;)[^;]*(?=;)"),
colD = str_extract(data, "(?<=;)[^;]*$")
)
它几乎可以满足我的要求,但 colC 与 colB 相同。我不太了解正则表达式,因此将不胜感激地收到解决方案和解释。
【问题讨论】:
-
为什么不
strsplit(df$data, ";")? -
这给了我一个列表,没有 df 中的剩余数据。