2016-12-26 6 views
2

私は因子があり、それをデータフレーム内のカラムにしたいと考えています。しかし、stringsAsFactorsを指定しても、自動的に文字に変換されていることがわかりました。ここでファクタは、データフレームに割り当てられると文字になります

はMWEです:

a <- data.frame(dummy=1:5, stringsAsFactors = TRUE) 
b <- as.factor(c("Monday", "Tuesday", "Monday", "Thursday", "Tuesday")) 
a["d"] <- b 

> levels(a["d"]) 
NULL 

私は割り当てを行うのですので、私は元のレベルを保ち、実際の係数を取得する方法は?

この例では、すべての適切なレベルの要素を準備している間に、「月曜日の木曜日の火曜日」のレベルを取得するため、後でその要素を変換するソリューションを使用できないことが重要です(この例では、すべての曜日が行になります)。

答えて

5

これは、列の抽出の違いによるものです。 a['d']data.frameであり、a[, 'd']またはa[['d']]またはa$dはすべてvectorとしてvectorとしてfactorを抽出します。違いを確認するには、str()

str(a['d']) 
#'data.frame': 5 obs. of 1 variable: 
#$ d: Factor w/ 3 levels "Monday","Thursday",..: 1 3 1 2 3 

str(a[['d']]) 
#Factor w/ 3 levels "Monday","Thursday",..: 1 3 1 2 3 

levels(a["d"]) 
#NULL 

levels(a[["d"]]) 
#[1] "Monday" "Thursday" "Tuesday" 
関連する問題