условное разбиение столбца в r - PullRequest
0 голосов
/ 27 июня 2018

Данные

столбец содержит как данные типа "a", так и данные типа "8a"

а

а

а

а

Я пытался разбить столбец со значениями «а» или «8а» на два столбца, чтобы получить столбец со значением «а» и столбец с «8» при наличии 8 , Я пытался разделить по позиции, но это не работает, так как позиция «а» меняется, если присутствует «8» или нет, и я не уверен, что делать. Буду благодарен за любую помощь,

Большое спасибо:)

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

С базой 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"
0 голосов
/ 27 июня 2018

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