gpt4 book ai didi

r - 分开在第一个周期 R

转载 作者:行者123 更新时间:2023-12-04 14:40:24 25 4
gpt4 key购买 nike

我有一个数据框,我希望通过第一个“.”将一列(var)分成两列。 var 中的值目前有 2 个句点。我想将新名称称为“第一”和“第二”。我已经添加了我的数据框以及它的屏幕截图。最后我展示了我的尝试。

enter image description here

df = structure(list(Date.Dates = c("42370", "42373", "42374", "42375", 
"42376", "42377"), var = c("SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF",
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", "SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF",
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF", "SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF",
"SHOP US Equity.30DAY_IMPVOL_100.0%MNY_DF"), val = c("59.835999999999999",
"67.208600000000004", "61.522599999999997", "63.298900000000003",
"66.243200000000002", "69.282899999999998")), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))


library(tidyverse)
df %>%
gather(var, val, -Date.Dates) %>%
separate(var, c("First", "Second", sep = "/^([^.]+)/"))

我们应该有一个名为“First”的新列,其中包含值“SHOP US Equity”。名为“Second”的第二列包含值“30DAY_IMPVOL...”

谢谢

最佳答案

我们可以使用 extract捕获不是 . 的字符( [^.]+ ) 从开头 ( ^ ) 的字符串作为一个组,然后是 . ( \\. ) 和“第二”列的第二组中的其余字符

library(dplyr)
library(tidyr)
df %>%
extract(var, into = c("First", "Second"), "^([^.]+)\\.(.*)")

或者直接使用 [.]sep .由于有多个 .,它会分成两列并带有警告。这将在 . 第一次出现时 split
df %>% 
separate(var, into = c("First", "Second"), "[.]")
# A tibble: 6 x 4
# Date.Dates First Second val
# <chr> <chr> <chr> <chr>
#1 42370 SHOP US Equity 30DAY_IMPVOL_100 59.835999999999999
#2 42373 SHOP US Equity 30DAY_IMPVOL_100 67.208600000000004
#3 42374 SHOP US Equity 30DAY_IMPVOL_100 61.522599999999997
#4 42375 SHOP US Equity 30DAY_IMPVOL_100 63.298900000000003
#5 42376 SHOP US Equity 30DAY_IMPVOL_100 66.243200000000002
#6 42377 SHOP US Equity 30DAY_IMPVOL_100 69.282899999999998

如果我们不需要警告,另一种选择是使用正则表达式环视
df %>%
separate(var, into = c("First", "Second"), "(?<=[a-z])\\.(?=[0-9])")

或使用 base R
df[c("First", "Second")] <- read.csv(text = sub("\\.", ",", df$var), header = FALSE)

关于r - 分开在第一个周期 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60068498/

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