У меня есть набор данных, состоящий из 82 столбцов.
Я пытаюсь написать функцию, которая принимает имя столбца в качестве аргумента (x), а затем преобразует имена в этом столбце в число. Количество уникальных имен для каждого столбца различается.
образец данных:
df <- data.frame(column_1 = 1:10, column_2 = c("MT", "BM", "KA", "MT", "BM", "KA","MT", "BM", "KA", "MT"))
Я ожидал, что эта функция преобразует столбец_2 в:
1,2,3 , 1,2,3,1,2,3,1
Когда я тестировал тело функции, оно делает то, что должно: 1) применять функцию только тогда, когда это символ и есть не являются NA 2) выберите уникальные значения 3) замените это уникальное значение числом от 1 до n
UniekeNamen <- unique(VolledigeSet$MSZoning)
VervangenVoor <- c(1:length(VolledigeSet$MSZoning))
if (is.character(VolledigeSet$MSZoning) & sum(is.na(VolledigeSet$MSZoning) == 0)) {
for (i in seq_along(UniekeNamen)) {
VolledigeSet$MSZoning[VolledigeSet$MSZoning == UniekeNamen[i]] <- VervangenVoor[i]
}
}
Но когда я заключаю тело в функцию и заменяю имя столбца на аргумент x функция не работает, как если бы аргумент не распознавался. Нет сообщения об ошибке, просто ничего не происходит ...
Это функция, которую я написал:
name2num <- function(x) {
UniekeNamen <- unique(x)
VervangenVoor <- c(1:length(UniekeNamen))
if (is.character(x) & sum(is.na(x) == 0)) {
for (i in seq_along(UniekeNamen)) {
x[x == UniekeNamen[i]] <- VervangenVoor[i]
}
}
}
У вас есть предложение, что изменить в функции?
Заранее спасибо!