该列同时包含“ a”之类的数据和“ 8a”之类的数据
a
a
a
a
8a
8a
8a
我一直试图将具有“ a”或“ 8a”值的列分为两列,以便当存在8时具有值“ a”的列和具有“ 8”的列。我试图按位置分开,但是不管是否存在“ 8”,“ a”的位置都会变化,并且我不确定该怎么做,因此它不起作用。我将不胜感激,
非常感谢:)
答案 0 :(得分:1)
我们可以使用separate
。指定正则表达式环视以在数字和字母a之间的交界处分割
library(tidyverse)
dat %>%
separate(initiativen, into = c('col1', 'col2'), sep= "(?<=8)(?=a)")
更一般的情况是将任意数字和任意字母分开
dat %>%
separate(initiativen, into = c('col1', 'col2'), sep= "(?<=[0-9])(?=[A-Za-z])")
dat <- data.frame(initiativen = c('a', 'a', 'a', 'a', '8a'),
stringsAsFactors = FALSE)
答案 1 :(得分:1)
使用基数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
。
split(dat$initiativen, eight)
#$`FALSE`
#[1] "a" "a" "a" "a"
#
#$`TRUE`
#[1] "8a" "8a" "8a"