在第一周期R上分开
我有一个数据框,在这个数据框中,我希望通过第一个。。var中的值当前有两个期间。我想先给这些新名字起个名字。我已经添加了我的数据帧以及它的屏幕截图。最后我展示了我的尝试 我们应该有一个名为First的新专栏,它持有美国股票的价值。第二列名为second,包含值30DAY\u IMPVOL 谢谢我们可以使用“提取”来捕获非文本的字符。[^.]+从字符串的开始处作为一个组,后跟。\\。第二组中的其余字符用于第二列在第一周期R上分开,r,dplyr,tidyverse,R,Dplyr,Tidyverse,我有一个数据框,在这个数据框中,我希望通过第一个。。var中的值当前有两个期间。我想先给这些新名字起个名字。我已经添加了我的数据帧以及它的屏幕截图。最后我展示了我的尝试 我们应该有一个名为First的新专栏,它持有美国股票的价值。第二列名为second,包含值30DAY\u IMPVOL 谢谢我们可以使用“提取”来捕获非文本的字符。[^.]+从字符串的开始处作为一个组,后跟。\\。第二组中的其余字符用于第二列 library(dplyr) library(tidyr) df %>%
library(dplyr)
library(tidyr)
df %>%
extract(var, into = c("First", "Second"), "^([^.]+)\\.(.*)")
或者只使用[.]作为sep。它将分成两列,并带有警告,因为有多个。这将在第一次发生时分割
我们可以使用extract来捕获非文本的字符。[^.]+从字符串的开始处作为一个组,后跟。\\。第二组中的其余字符用于第二列
library(dplyr)
library(tidyr)
df %>%
extract(var, into = c("First", "Second"), "^([^.]+)\\.(.*)")
或者只使用[.]作为sep。它将分成两列,并带有警告,因为有多个。这将在第一次发生时分割
您需要使用如下所示的额外参数
df %>%
separate(var, c("First","second"), "\\.",extra = "merge")
# A tibble: 6 x 4
Date.Dates First second val
<chr> <chr> <chr> <chr>
1 42370 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 59.835999999999999
2 42373 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 67.208600000000004
3 42374 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 61.522599999999997
4 42375 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 63.298900000000003
5 42376 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 66.243200000000002
6 42377 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 69.282899999999998
您需要使用如下所示的额外参数
df %>%
separate(var, c("First","second"), "\\.",extra = "merge")
# A tibble: 6 x 4
Date.Dates First second val
<chr> <chr> <chr> <chr>
1 42370 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 59.835999999999999
2 42373 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 67.208600000000004
3 42374 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 61.522599999999997
4 42375 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 63.298900000000003
5 42376 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 66.243200000000002
6 42377 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 69.282899999999998
我们可以使用str_split/str_split_fixed from stringr,其中可以指定要拆分字符串n的部分数量。因为这里我们只需要2列,所以可以指定n=2
我们可以使用str_split/str_split_fixed from stringr,其中可以指定要拆分字符串n的部分数量。因为这里我们只需要2列,所以可以指定n=2
你真的需要那一步吗。它正在创建一个同时包含“字符/数字”混音的列。您真的需要在那里进行聚集步骤吗。它正在创建一个包含“字符/数字”组合的列,谢谢@Ronak。我从你所有的帖子中学习。但是,我决定用akrun回答。一如既往,谢谢@Ronak。我从你所有的帖子中学习。不过,已经决定用阿克伦回答。
df[c("First", "Second")] <- read.csv(text = sub("\\.", ",", df$var), header = FALSE)
df %>%
separate(var, c("First","second"), "\\.",extra = "merge")
# A tibble: 6 x 4
Date.Dates First second val
<chr> <chr> <chr> <chr>
1 42370 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 59.835999999999999
2 42373 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 67.208600000000004
3 42374 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 61.522599999999997
4 42375 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 63.298900000000003
5 42376 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 66.243200000000002
6 42377 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF 69.282899999999998
stringr::str_split_fixed(df$var, "\\.", 2) %>%
as.data.frame() %>%
setNames(c('First', 'Second'))
# First Second
#1 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF
#2 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF
#3 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF
#4 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF
#5 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF
#6 SHOP US Equity 30DAY_IMPVOL_100.0%MNY_DF