Манипуляции со строками в R для создания столбца данных - PullRequest
1 голос
/ 26 сентября 2011

У меня есть R-кадр данных (df), который включает столбец фактора, Team

Team
Baltimore Orioles
Kansas City Chiefs
...

Я просто хочу создать новый столбец, никнейм, который просто ссылается на фамилию

Nickname
Orioles
Chiefs

На первом этапе я попытался разделить коэффициент следующим образом:

df$Nickname <- strsplit(as.character(df$Team), " ")

, который создает список полей символов, на которые я могу ссылаться, таким образом

>df$Nickname[1]

[[1]]
[1] "Baltimore" "Orioles"

и

>str(df$Nickname[1])

List of 1
 $ : chr [1:2] "Baltimore" "Orioles"

но тогда я не знаю, как поступить.Попытка получить длину

длина (df $ Nickname [1])

дает 1 - что сбивает меня с толку

Ответы [ 3 ]

7 голосов
/ 26 сентября 2011

Используйте регулярное выражение:

text <- c("Baltimore Orioles","Kansas City Chiefs")

gsub("^.*\\s", "", text)
[1] "Orioles" "Chiefs" 

Регулярное выражение ищет:

  • ^ означает начало строки
  • .* означает любой символ, повторяется
  • \\s означает один пробел

gsub находит этот шаблон и заменяет его пустой строкой, оставляя вас с последним словом каждой строки.

4 голосов
/ 26 сентября 2011

вам просто нужно отменить список разделенных строк и взять последнюю

    full <- c("Baltimore Orioles","Kansas City Chiefs")
    getlast <- function(x){
    parts <- unlist(strsplit(x, split = " "))
    parts[length(parts)]
    }
    sapply(full,getlast)
    > Baltimore Orioles Kansas City Chiefs 
    > "Orioles"           "Chiefs" 
0 голосов
/ 03 мая 2014

Как насчет этого?

require(plyr)
ldply(df$Nickname)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...