簡體   English   中英

如何將數據框中給出的列表轉換為 R 數據框中的因子/數字?

[英]How to convert list given in a data frame to factor/numbers in R Data frame?

mydf 用於可重復的目的。 我有 mydf 數據框,我想將列表轉換為 mydf 中的因子,但它引發錯誤

mydf<-data.frame(col1=c("a","b"),col2=c("f","j"))
mydf$col1<-as.list(mydf$col1)
mydf$col2<-as.list(mydf$col2)
str(mydf)

這是我嘗試將列表更改為因子/數字類型時遇到的錯誤

mydf$col1<-as.factor(mydf$col1)

Error in order(y) : unimplemented type 'list' in 'orderVector1'

我希望我的數據框 (mydf) 為 expected_df(沒有列出數據框)

expected_df<-data.frame(col1=c("a","b"),col2=c("f","j"))
str(expected_df)

如果您比較 str(mydf) 和 str(expected_df) ,則存在差異,因為我無法將列表更改為 mydf 數據框中的因子。 有什么解決方法可以解決我的問題嗎?

str(mydf)
'data.frame':   2 obs. of  2 variables:
$ col1:List of 2
..$ : Factor w/ 2 levels "a","b": 1
..$ : Factor w/ 2 levels "a","b": 2
$ col2:List of 2
..$ : Factor w/ 2 levels "f","j": 1
..$ : Factor w/ 2 levels "f","j": 2



str(expected_df)
'data.frame':   2 obs. of  2 variables:
$ col1: Factor w/ 2 levels "a","b": 1 2
$ col2: Factor w/ 2 levels "f","j": 1 2

您可以使用stringsAsFactors = TRUE

> mydf <- data.frame(col1 = c("a", "b"), col2 = c("f", "j"), stringsAsFactors = TRUE)
> mydf
  col1 col2
1    a    f
2    b    j
> mydf$col1
[1] a b
Levels: a b
> str(mydf)
'data.frame':   2 obs. of  2 variables:
$ col1: Factor w/ 2 levels "a","b": 1 2
$ col2: Factor w/ 2 levels "f","j": 1 2

來晚了,但我想我會分享我的經驗以供將來搜索。 嘗試將列轉換為因子時,我也遇到了“順序錯誤(y)”錯誤。 我繞過它的方法是明確標記這些因素。 在你的例子中,它會是這樣的:

# instead of this:
# mydf$col1 <- as.factor(mydf$col1)

# using this:
mydf$col1 <- factor(mydf$col1, levels=c("a","b"))

暫無
暫無

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

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