Ketika saya mengonversi faktor menjadi numerik atau bilangan bulat, saya mendapatkan kode level yang mendasarinya, bukan nilai sebagai angka.
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
Saya harus menggunakan pasteuntuk mendapatkan nilai-nilai nyata:
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
Apakah ada cara yang lebih baik untuk mengubah faktor menjadi angka?
df %>% convert(num(column)). Atau jika Anda memiliki vektor faktor yang dapat Anda gunakanas_reliable_num(factor_vector)
attributes(f)), jadi saya tidak berpikir ada yang salah dengan ituas.numeric(paste(f)). Mungkin akan lebih baik untuk berpikir mengapa (dalam konteks tertentu) Anda mendapatkan faktor di tempat pertama, dan mencoba untuk menghentikannya. Misalnya, apakahdecargumen dalamread.tableset dengan benar?