r中的条件列拆分

r中的条件列拆分,r,tidyverse,R,Tidyverse,该列包含“a”等数据和“8a”等数据 a a a a 8a 8a 8a 我一直在尝试将一个值为“a”或“8a”的列拆分为两列,以便在有8的情况下有一个值为“a”的列和一个值为“8”的列。我试过按位置分开,但不起作用,因为如果“8”出现或不出现,“a”的位置不同,我不知道该怎么办。如果有任何帮助,我将不胜感激 非常感谢:)我们可以使用单独的。指定要在数字和字母a的交界处拆分的正则表达式lookaround library(tidyverse) dat %>% separate(ini

该列包含“a”等数据和“8a”等数据

a

a

a

a

8a

8a

8a

我一直在尝试将一个值为“a”或“8a”的列拆分为两列,以便在有8的情况下有一个值为“a”的列和一个值为“8”的列。我试过按位置分开,但不起作用,因为如果“8”出现或不出现,“a”的位置不同,我不知道该怎么办。如果有任何帮助,我将不胜感激


非常感谢:)

我们可以使用
单独的
。指定要在数字和字母a的交界处拆分的正则表达式lookaround

library(tidyverse)
dat %>% 
   separate(initiativen, into = c('col1', 'col2'), sep= "(?<=8)(?=a)")
库(tidyverse)
dat%>%

分离(initialiven,into=c('col1','col2'),sep=“(?我们可以使用
separate
)。指定regex lookaround,以便在数字和字母a之间的连接处分离

library(tidyverse)
dat %>% 
   separate(initiativen, into = c('col1', 'col2'), sep= "(?<=8)(?=a)")
库(tidyverse)
dat%>%

分离(initiativen,into=c('col1','col2'),sep=“(?用base R你可以做

dat <- data.frame(questionn = rep("008", 7),
                  initiativen = c(rep("a", 4), rep("8a", 3)),
                  stringsAsFactors = FALSE)                      


eight <- grepl("^8", dat$initiativen)
split(dat, eight)
#$`FALSE`
#  questionn initiativen
#1       008           a
#2       008           a
#3       008           a
#4       008           a
#
#$`TRUE`
#  questionn initiativen
#5       008          8a
#6       008          8a
#7       008          8a

用base R你可以

dat <- data.frame(questionn = rep("008", 7),
                  initiativen = c(rep("a", 4), rep("8a", 3)),
                  stringsAsFactors = FALSE)                      


eight <- grepl("^8", dat$initiativen)
split(dat, eight)
#$`FALSE`
#  questionn initiativen
#1       008           a
#2       008           a
#3       008           a
#4       008           a
#
#$`TRUE`
#  questionn initiativen
#5       008          8a
#6       008          8a
#7       008          8a
split(dat$initiativen, eight)
#$`FALSE`
#[1] "a" "a" "a" "a"
#
#$`TRUE`
#[1] "8a" "8a" "8a"