разделение столбца на несколько в зависимости от положения символа - PullRequest
0 голосов
/ 27 июня 2018

у меня что-то похожее на это набор данных

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, ...].

Буду признателен за любую помощь, большое спасибо:)

Ответы [ 2 ]

0 голосов
/ 27 июня 2018
testra2 <- testra1 %>% 
separate(questionn,  
        into = c("num", "text"),
        sep= "(?=[A-Za-z])")
0 голосов
/ 27 июня 2018

Вы можете разделить по позиции.

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]+)")

DATA

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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...