Приведение нескольких столбцов временных рядов к факторам в большом кадре - PullRequest
0 голосов
/ 11 июня 2018

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

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

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

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

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

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

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

0 голосов
/ 11 июня 2018
df[ ,2:30] <- lapply(df[ ,2:30], as.factor)
...