Как преобразовать все факторные переменные в числовые переменные (в нескольких фреймах данных одновременно)? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть n фреймов данных, каждый из которых соответствует данным из города.

В кадре данных есть 3 переменные, и в настоящее время все они являются факторными переменными.

Я хочу преобразовать их все в числовые переменные.

Я начал с создания вектора с именами всех фреймов данных, чтобы использовать его в цикле for.


cities <- as.vector(objects())


for ( i in cities){

i <-  as.data.frame(lapply(i, function(x) as.numeric(levels(x))[x]))

}


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

Самое странное, что при выполнении их один за другим (как показано ниже) это работает:


df <- as.data.frame(lapply(df, function(x) as.numeric(levels(x))[x]))

Ответы [ 2 ]

1 голос
/ 07 мая 2019

По сути, вы пытаетесь изменить тип поля, если оно является фактором (для числового типа). Один из подходов с использованием purrr будет выглядеть следующим образом:

library(purrr)

map(cities, ~ modify_if(., is.factor, as.numeric))

Обратите внимание, что modify() само по себе похоже на lapply(), но оно не меняет базовую структуру данных объектов, которые вы модифицируете (в данном случае, фреймы данных). modify_if() просто принимает предикат в качестве дополнительного аргумента.

0 голосов
/ 07 мая 2019

для тех, кто интересуется моим вопросом, я разработал ответ:


for ( i in cities){ 

  assign(i, as.data.frame(lapply(get(i), function(x) as.numeric(levels(x))[x]))) 

  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...