gpt4 book ai didi

r - 如何通过提取将列拆分为两列?

转载 作者:行者123 更新时间:2023-12-05 08:49:35 24 4
gpt4 key购买 nike

我想将列分成两列,然后提取数字并将其单独保留在一列中。

df <- data.frame(V1 = c("[1] Strongly disagree", "[2] Somewhat disagree", "[3] Neither", "[4] Somewhat agree", "[5] Strongly agree"))
                  V1
[1] Strongly disagree
[2] Somewhat disagree
[3] Neither
[4] Somewhat agree
[5] Strongly agree

我尝试使用 tidyr 中的 separate 函数:

tidyr::separate(df, V1, into = c("Value", "Label"), sep = "] ")

Value   Label
[1 Strongly disagree
[2 Somewhat disagree
[3 Neither
[4 Somewhat agree
[5 Strongly agree

我也许可以用另一个函数删除 [,但我想知道我是否可以一步解决这个问题,并想知道是否有另一个函数可以完成这项工作。

我想把这个弄到最后

        Label        Value
Strongly disagree 1
Somewhat disagree 2
Neither 3
Somewhat agree 4
Strongly agree 5

最佳答案

如果您更喜欢 base R,这里是 base R 解决方案:

df <- data.frame(V1 = c("[1] Strongly disagree", "[2] Somewhat disagree", "[3] Neither", "[4] Somewhat agree", "[5] Strongly agree"))

df$value = as.numeric(regmatches(df$V1, regexpr(r"(\d)", df$V1)))

df$V1 = regmatches(df$V1, regexpr("(?<=] ).*", df$V1, perl=TRUE))
df
#> V1 value
#> 1 Strongly disagree 1
#> 2 Somewhat disagree 2
#> 3 Neither 3
#> 4 Somewhat agree 4
#> 5 Strongly agree 5

reprex package 创建于 2020-09-05 (v0.3.0)

regmatches是一个基本的 R 函数,它从向量中返回匹配的值,它以一个向量和一个 regexpr 作为输入。对象。

如果第一种情况(value列)\d用于提取数字。在第二种情况下,(?<=] ).*用于返回在 ] 之后匹配的任何内容,

关于r - 如何通过提取将列拆分为两列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63745883/

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