簡體   English   中英

從系數轉換為數值將列表中data.frames中的一列轉換為數字

[英]Convert from factor to numeric a column in data.frames within a list

這是我的兩個列表和相關代碼的示例:

df1 = data.frame(a = c(1,1,1,2,3,3,4,4,5,6,6,7,8,9,9,10))
df2 = data.frame(a = c(1,2,2,2,3,4,5,5,6,6,7,8,9,9,10,10,11))

lst = list(df1, df2)

lst_table = lapply(lst, function(x) data.frame(table(x$a))) 

> class(lst_table[[1]]$Var1)
[1] "factor"
> class(lst_table[[2]]$Var1)
[1] "factor"

由於我的代碼目的,我需要列表中每個data.frame中的Var1列都是數字向量。

如何在不損失信息的情況下將因子轉換為整數\\數字開始? 我將以下代碼應用於單個data.frames並有效:

> df1$a = as.numeric(levels(df1$a))[df1$a]
> df2$a = as.numeric(levels(df2$a))[df2$a]

> class(df1$a)
[1] "numeric"
> class(df2$a)
[1] "numeric"

但是如何將以上內容應用於列表?

我試過了:

lst_table = lapply(lst_table, function(y) {y$Var1 = as.numeric(levels(y$Var1))[y$Var1]})

但它不起作用。

有什么建議嗎? 謝謝

我認為問題在於您在第二個lapply中的函數僅返回數字因子水平的向量,而不是整個data.frame 我相信以下應該起作用:

foo <- function(y) {
  y$Var1 <- as.numeric(levels(y$Var1))[y$Var1]
  return(y)
}

lst_table <- lapply(lst_table, foo) 

暫無
暫無

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

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