Приведение нескольких столбцов временных рядов к факторам в большом кадре данных
Я хотел бы знать, существует ли "простой / быстрый" способ преобразования символьных переменных в фактор.
Я знаю, что можно сделать вектор с именами столбцов, а затем использовать 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
, так что вам не нужно беспокоиться о позициях столбцов или именах.