Приведение нескольких столбцов временных рядов к факторам в большом кадре данных

Я хотел бы знать, существует ли "простой / быстрый" способ преобразования символьных переменных в фактор.

Я знаю, что можно сделать вектор с именами столбцов, а затем использовать lapply, Тем не менее, я работаю с большим фреймом данных с более чем 200 переменными, поэтому было бы предпочтительно не записывать более 200 имен в векторе.

Я также осознаю, что могу привести весь фрейм данных с помощью lapply, type.convert а также sapplyНо поскольку я работаю с данными временных рядов, где некоторые являются категориальными, а некоторые числовыми, меня это тоже не интересует.

Есть ли способ использовать номер столбца в этом? Т.е. [ ,2:200]? Я попробовал следующее, но безуспешно:

df[ ,2:30] <- lapply(df[ ,2:30], type.convert)
sapply(df, factor)

С решением, приведенным выше, мне все равно придется сделать несколько из них, но это все равно будет быстрее, чем написать все имена переменных.

У меня также есть ощущение, что цикл может быть пригоден для использования здесь, но я не был бы уверен в том, как выписать его, или если это даже способ сделать это.

2 ответа

Решение

Когда вы пишете, что вам нужно преобразовать (все?) Символьные переменные в факторы, вы можете использовать mutate_if от dplyr

library(dplyr)
mutate_if(df, is.character, as.factor)

При этом вы работаете только с колонками, для которых is.character возвращается TRUE, так что вам не нужно беспокоиться о позициях столбцов или именах.

df[ ,2:30] <- lapply(df[ ,2:30], as.factor)
Другие вопросы по тегам