Wenn ich einen Faktor in einen numerischen oder ganzzahligen Wert umwandle, erhalte ich die zugrunde liegenden Ebenencodes und nicht die Werte als Zahlen.
f <- factor(sample(runif(5), 20, replace = TRUE))
## [1] 0.0248644019011408 0.0248644019011408 0.179684827337041
## [4] 0.0284090070053935 0.363644931698218 0.363644931698218
## [7] 0.179684827337041 0.249704354675487 0.249704354675487
## [10] 0.0248644019011408 0.249704354675487 0.0284090070053935
## [13] 0.179684827337041 0.0248644019011408 0.179684827337041
## [16] 0.363644931698218 0.249704354675487 0.363644931698218
## [19] 0.179684827337041 0.0284090070053935
## 5 Levels: 0.0248644019011408 0.0284090070053935 ... 0.363644931698218
as.numeric(f)
## [1] 1 1 3 2 5 5 3 4 4 1 4 2 3 1 3 5 4 5 3 2
as.integer(f)
## [1] 1 1 3 2 5 5 3 4 4 1 4 2 3 1 3 5 4 5 3 2
Ich muss zurückgreifen auf paste
um die tatsächlichen Werte zu erhalten:
as.numeric(paste(f))
## [1] 0.02486440 0.02486440 0.17968483 0.02840901 0.36364493 0.36364493
## [7] 0.17968483 0.24970435 0.24970435 0.02486440 0.24970435 0.02840901
## [13] 0.17968483 0.02486440 0.17968483 0.36364493 0.24970435 0.36364493
## [19] 0.17968483 0.02840901
Gibt es eine bessere Möglichkeit, einen Faktor in einen numerischen Wert umzuwandeln?
7 Stimmen
Die Stufen eines Faktors werden ohnehin als Zeichendatentyp gespeichert (
attributes(f)
), daher glaube ich nicht, dass es etwas gegen dieas.numeric(paste(f))
. Vielleicht wäre es besser, darüber nachzudenken, warum Sie (in dem spezifischen Kontext) überhaupt einen Faktor erhalten, und zu versuchen, dies zu verhindern. Ist z. B. derdec
Argument inread.table
richtig eingestellt?0 Stimmen
Wenn Sie einen Datenrahmen verwenden, können Sie convert from hablar verwenden.
df %>% convert(num(column))
. Wenn Sie einen Faktorvektor haben, können Sie auchas_reliable_num(factor_vector)
1 Stimmen
Vielen Dank für diese Frage. Dies ist SO VIEL f