我有类似的东西 set of data
891 Rehab 2a SQ002 1
892 Rehab 2a SQ002 1
893 Rehab 2a SQ002 1
894 Rehab 2a SQ002 2
895 Rehab 2a SQ002 2
896 Rehab 2a SQ002 1
897 Rehab 2a SQ002 2
898 Rehab 2a SQ002 2
899 Rehab 2a SQ002 1
900 Rehab 2a SQ002 1
并且我不确定如何将包含2a的列(问题)分为两个单独的列,其中一个包含“ a”,另一个包含“ 2”。我已经尝试过了
testra2<- testra1 %>%
separate(questionn,
into = c("num", "text"),
sep= "(?=[0-9])(?<=[A-Za-z])")
但是它基本上只是创建一个空白列,我收到以下警告消息:
“警告消息:预期为2件。缺少的件中填充了
NA
在2720行中[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16, 17,18,19,20,...]。
感谢您的帮助,非常感谢:)
答案 0 :(得分:2)
您可以按位置分开。
library(tidyverse)
testra2<- testra1 %>%
separate(questionn,
into = c("num", "text"),
sep = 1)
或使用extract
函数。
testra3 <- testra1 %>%
extract(questionn, into = c("num", "text"), regex = "([0-9]+)([A-Za-z]+)")
数据
testra1 <- read.table(text = "891 Rehab 2a SQ002 1
892 Rehab 2a SQ002 1
893 Rehab 2a SQ002 1
894 Rehab 2a SQ002 2
895 Rehab 2a SQ002 2
896 Rehab 2a SQ002 1
897 Rehab 2a SQ002 2
898 Rehab 2a SQ002 2
899 Rehab 2a SQ002 1
900 Rehab 2a SQ002 1 ",
header = FALSE, stringsAsFactors = FALSE)
names(testra1) <- c("V1", "V2", "questionn", "V3", "V4")
答案 1 :(得分:1)
testra2 <- testra1 %>%
separate(questionn,
into = c("num", "text"),
sep= "(?=[A-Za-z])")