Как заменить каждое вхождение нескольких строк в столбце одной уникальной новой строкой в R
У меня есть столбец в наборе данных, который начинается с M, F or I
, Я хочу заменить все M
или же F
в колонке с MF
и уходи I
нетронутым.
data$Sex:
"M"
"F"
"I"
"F"
"M"
"I"
Я попробовал фрагмент, как показано ниже, но безрезультатно.
df <- data$Sex
for(i in names(df)){
gsub("M","MF",df)
gsub("F","MF",df)
}
Я новичок в Р. Любая помощь будет оценена.
1 ответ
При условии, что
- возможные уровни в настоящее время "M", "F" и "I"
sex
это"factor"
колонка
определить отображение levs
между старым и новым уровнями, а затем напишите это:
data <- data.frame(sex = c("M", "F", "I", "F", "M", "I")) # test input
Теперь попробуйте один из них:
levs <- c(F = "MF", M = "MF", I = "I") # mapping
transform(data, sex = factor(levs[sex])) ##
levels(data$sex) <- levs # levs defined above
Если sex
это "character"
столбец, то первый выше все еще работает, если мы удаляем слово factor
и это работает так же:
data_c <- data.frame(sex = c("M", "F", "I", "F", "M", "I"), stringsAsFactors = FALSE)
transform(data_c, sex = replace(sex, sex %in% c("M", "F"), "MF"))
и решение помеченное ## также работает, если слово factor
опущен