Saya menggunakan read.csv untuk mengimpor file CSV dengan nilai numerik di mana pemisah CSV adalah ";", pemisah desimal adalah "," dan tambahan pemisah ketiga adalah "."

Hist <- read.csv(file = "XXXX", header = T, sep = ";", dec =",", stringsAsFactors=FALSE)

Saya mengubahnya menjadi data.table ...

Hist <- data.table(Hist)

Dan terlihat seperti ini:

  Date        Value
# 2017-11-12  12.456,89
# 2017-11-10  13.234,99
# 2017-11-08  14.123,45

Sekarang saya ingin mengubah kelas/format kolom "Nilai" menjadi numerik karena saya ingin menghitung dengannya. Tapi semua yang saya coba tidak berhasil. Sebagai contoh:

Hist[, Value := as.numeric(Value)]

Sedang membuat kesalahan:

Pesan peringatan: Dalam eval(jsub, SDenv, parent.frame()) : NA diperkenalkan dengan paksaan

Adakah yang bisa membantu?

0
MelBourbon 12 November 2017, 13:18

1 menjawab

Jawaban Terbaik

Mereka dibaca sebagai string. Untuk mengonversinya menjadi angka, hapus pemisah ribuan (.) dan kemudian ubah pemisah desimal (,) menjadi titik.

Hist$Value = as.numeric(gsub(",",".",(gsub("\\.","",Hist$Value))))

Yang sama dengan:

noPoints = gsub("\\.", "", Hist$Value)
commaToPoint = gsub(",", ".", noPoints)
Hist$Value = as.numeric(commaToPoint)
0
R. Schifini 12 November 2017, 13:03