Как разбить вектор строки по первому желаемому символу в R? - PullRequest
1 голос
/ 14 февраля 2020

Вот пример.

library(tidyverse)
df<-data.frame(x=c("a-b-c", "b-d","c-d_e-f"))
df
#        x
#1   a-b-c
#2     b-d
#3 c-d_e-f

Я хотел бы separate столбец x первым -, поэтому желаемый результат будет:

  x     y
1 a   b-c
2 b     d
3 c d_e-f

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

1) отдельный Использование separate в пакете тидира:

library(dplyr)
library(tidyr)

df %>%
  separate(x, c("x", "y"), sep = "-", extra = "merge")

, дающее:

  x     y
1 a   b-c
2 b     d
3 c d_e-f

2) База R Без использования каких-либо пакетов мы можем использовать read.table. Замените первый минус на пробел первым в вопросе, то мы можем использовать read.fwf

read.fwf(file = textConnection(as.character(df$x)), widths = c(1, 1, 99), 
  colClasses = c(NA, "NULL", NA), col.names = c("x", NA, "y"))

давая:

  x     y
1 a   b-c
2 b     d
3 c d_e-f
1 голос
/ 14 февраля 2020

Мы можем использовать extract

library(tidyr)
library(dplyr)
df %>%
    extract(x, into = c('x', 'y'), '^([^-])+-(.*)')

Или с separate с использованием extra

df %>%
    separate(x, into = c('x', 'y'), '-', extra = 'merge')
#   x     y
#1 a   b-c
#2 b     d
#3 c d_e-f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...