![](/img/trans.png)
[英]How to convert all factor variables into numeric variables in a large data frame without loosing variables labels?
[英]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.