簡體   English   中英

如何將所有因子變量轉換為數值變量(一次在多個數據框中)?

[英]How to convert all factor variables into numeric variables (in multiple data frames at once)?

我有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]))

實際上,您要嘗試的是修改字段的類型(如果它是一個因素)(為數字類型)。 使用purrr一種方法是:

library(purrr)

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

請注意, modify()本身就像lapply()但是它不會更改您要修改的對象(在本例中為數據lapply()的基礎數據結構。 modify_if()只是將謂詞作為附加參數。

對於任何對我的問題感興趣的人,我都會給出答案:


for ( i in cities){ 

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

  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM