Написание функции, которая использует цикл for для замены отчетных значений одного столбца в наборе данных на основе символьного вектора - PullRequest
1 голос
/ 09 октября 2019

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

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

answer_options <- c("blue", "red", "yellow", "green")

, а затем набор данных, содержащий столбец цвета:

data <- data.frame(Animal=c("Parrot", "Pigeon", "Crocodile", "Impala", "Dolphin", "Dinosaur"), Colour=c(0,1,1,2,1,3), Year=c(2018, 2017, 2018, 2019, 2020, 2024))

Я посмотрелв каждом соответствующем вопросе здесь, но не могу найти способ заставить следующую функцию заменить отчетные значения соответствующими answer_options (Обратите внимание, что я мог бы заменить их альтернативно, но моя миссия состоит в том, чтобы создать функцию, а не повторять блокикод каждый раз):

answer.option.replacer <- function(dataset, column_index, replacer_vector, replacer_length){
for (i in 0:replacer_length){
dataset[[column_index]][dataset[[column_index]]==i] <-replacer_vector[i+1]}
return(dataset[[column_index]])
}

Теперь, если я запускаю:

answer.option.replacer(data, 2, answer_options, 4)

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

1 Ответ

1 голос
/ 09 октября 2019

мы можем просто использовать индекс для создания столбцов. В R индекс начинается с 1, поэтому добавьте 1 в столбец «Цвет» и используйте его для замены значений

data$Colour <- answer_options[data$Colour +1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...