Я создал ваш фрейм данных, а затем использовал dput()
, чтобы преобразовать его в формат, который позволит людям легко копировать / вставлять его из Интернета:
b <- structure(list(Winner = c("Tom", "Jerry", "Jane"), Color = c("Yellow",
"Yellow", "Blue"), Size = c("Med", "Lar", "Med")), .Names = c("Winner",
"Color", "Size"), row.names = c(NA, -3L), class = "data.frame")
Я не уверен, что именно означает as.factor()
в вашем коде. as.factor
преобразует векторы значений в факторы - на самом деле это ничего не значит для одного значения. Если b $ Winner - символьный вектор, это работает:
b$Winner[dat$Winner %in% "Tom"] <- "Tom LLC"
Если b $ Winner является фактором, то «Том LLC» должен быть одним из уровней, чтобы вы могли вставить его в фактор. Если b $ Winner является фактором, я бы, вероятно, сделал следующее:
levels(b$Winner) <- c("Tom LLC", "Jerry", "Jane")
, который просто говорит R, что возможные значения Winner (т.е. уровни b $ Winner) должны быть заменены. Некоторые из продвинутых пользователей R здесь предлагают установить для параметра stringsAsFactors значение FALSE ... и чем больше я использую R, тем больше я согласен. Намного проще манипулировать простыми строковыми векторами, а затем вставлять их в коэффициент по мере необходимости.