gpt4 book ai didi

r - 提取r中分号之间的字符

转载 作者:行者123 更新时间:2023-12-05 08:36:07 25 4
gpt4 key购买 nike

尝试提取分号之间的数据并将该数据放入新列中。

这是一些数据

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, "(?<=;)[^;]*$")
)

它几乎可以满足我的要求,但 colCcolB 相同。我不太了解正则表达式,因此非常感谢收到解决方案和解释。

最佳答案

碱基R

cbind(df, read.csv2(text = df$data, header = FALSE))
# data num V1 V2 V3 V4 V5
# 1 a;;c;d 1 a c d NA
# 2 a;b;;d 2 a b d NA
# 3 a;;;d 3 a d NA
# 4 a;b;;; 4 a b NA

dplyr

library(dplyr)
df %>%
mutate(read.csv2(text = data, header = FALSE))
# data num V1 V2 V3 V4 V5
# 1 a;;c;d 1 a c d NA
# 2 a;b;;d 2 a b d NA
# 3 a;;;d 3 a d NA
# 4 a;b;;; 4 a b NA

这在没有显式赋值的情况下有效,因为mutate(和summarize)将愉快地采用命名-列表(其中 data.frame 是一种特殊的——兼容的——情况。

关于r - 提取r中分号之间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70534250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com