Как добавить столбец в кадр данных в R на основе частичной строки в другом столбце? - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь создать новый столбец с возвращенным значением на основе частичного совпадения строк в другом столбце R. Первый столбец - это баскетбольная команда, обозначенная цветом и позицией (например, yellow_center, red_guard, orange_forward и т. Д.),Столбец, который я пытаюсь добавить, представляет собой столбец с именем команды в зависимости от цвета. В этом примере я хочу, чтобы значения Yellow, Orange или Red были возвращены на основе строки команды / позиции ранее в строке. Я буду использовать только 4 или 5 цветов.

Я перепутал функции grep, grepl и transform, но не получил ожидаемого ответа.

Я пытался получить первую букву, но, похоже, это не таксоздавать колонку.

transform (teamfile, team.name <-substr (teamfile $ player_position, 1) </p>

Я пробовал grepl несколькими способами, но не сохранял их.

То, что я хотел бы видеть, это совершенно новый столбец с «желтым», «красным» или «оранжевым», в зависимости от того, какой цвет может быть в значении столбца player_position.

Ответы [ 3 ]

0 голосов
/ 08 октября 2019

df$new_column = unlist(strsplit(df$colname,'_'))[seq(1,nrow(df),2)] разделит цвета на свой столбец.

0 голосов
/ 08 октября 2019

Это будет работать. Использование mtcars в качестве примера набора данных

mtcars$colour<- NA
for( i in c("Merc","Toyota","Ford","Mazda" )) {mtcars[ grepl( i  ,  rownames( mtcars), ) , "colour" ] <- i }
0 голосов
/ 08 октября 2019

Если я вас правильно понимаю, вы хотите извлечь цвет из строки, верно? Используя пакет stringr, вы можете использовать

library(stringr)
teamfile$teamname <- str_extract(teamfile$player_position,  "^.*(?=\\_)") 
# this regex extraxts everything up to a "_"
# so it extracts "orange" based on "orange_guard", "orange_center" or "orange_whatever"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...