Как переименовать определенные наблюдения в столбце на основе определенного строкового значения? - PullRequest
2 голосов
/ 14 июля 2020

Я хочу переименовать определенные значения моего столбца на основе определенной строки. Мои текущие данные похожи на этот пример:

PlayerID

Hank_Aaron+7
Babe Ruth+5
MMM + 7
Willie Mayes+1
MMM + 3

Я хотел бы переименовать все наблюдения, которые начинаются с «MMM», на просто «MMM». Например, я хочу, чтобы приведенная выше таблица в конечном итоге выглядела так:

PlayerID

Hank_Aaron+7
Babe Ruth+5
MMM
Willie Mayes+1
MMM

Мне также нужно сохранить столбец в том же фрейме данных, чтобы я мог использовать его для регрессий. Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

С помощью grep найдите индекс позиции строки 'MMM', извлеките их, затем выполните присваивание (предполагая, что 'PlayerID' - это character класс, а не factor класс)

df1$PlayerID[grep("^MMM", df1$PlayerID)] <- "MMM"
0 голосов
/ 14 июля 2020

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

df$PlayerID[startsWith(df$PlayerID, 'MMM')] <- 'MMM'

Мы также можем использовать это в replace:

df$PlayerID <- replace(df$PlayerID, startsWith(df$PlayerID, 'MMM'), 'MMM')
df
#        PlayerID
#1   Hank_Aaron+7
#2    Babe Ruth+5
#3            MMM
#4 Willie Mayes+1
#5            MMM

data

df <- structure(list(PlayerID = c("Hank_Aaron+7", "Babe Ruth+5", "MMM + 7", 
"Willie Mayes+1", "MMM + 3")), class = "data.frame", row.names = c(NA, -5L))
...