Cara memperbaikinya di r: level faktor tidak valid, na dihasilkan


Pesan peringatan yang mungkin Anda temui saat menggunakan R adalah:

 Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

Peringatan ini terjadi ketika Anda mencoba menambahkan nilai ke variabel faktor di R yang belum ada sebagai tingkat yang ditentukan.

Contoh berikut menunjukkan bagaimana menanggapi peringatan ini dalam praktiknya.

Cara mereproduksi peringatan tersebut

Misalkan kita memiliki bingkai data berikut di R:

 #create data frame
df <- data. frame (team=factor(c('A', 'A', 'B', 'B', 'B')),
                 dots=c(99, 90, 86, 88, 95))

#view data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95

#view structure of data frame
str(df)

'data.frame': 5 obs. of 2 variables:
 $ team: Factor w/ 2 levels "A","B": 1 1 2 2 2
 $ points: num 99 90 86 88 95

Kita melihat bahwa variabel tim adalah faktor dengan dua level: “A” dan “B”

Sekarang misalkan kita mencoba menambahkan baris baru di akhir bingkai data menggunakan nilai “C” untuk team :

 #add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
  invalid factor level, NA generated

Kami menerima pesan peringatan karena nilai “C” belum ada sebagai tingkat faktor untuk variabel tim .

Penting untuk dicatat bahwa ini hanyalah pesan peringatan dan R akan tetap menambahkan baris baru ke akhir bingkai data, namun akan menggunakan nilai NA dan bukan ‘C’:

 #view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 NA 100

Bagaimana cara menghindari peringatan tersebut

Untuk menghindari peringatan tingkat faktor yang tidak valid , kita perlu mengubah variabel faktor menjadi variabel karakter terlebih dahulu, lalu kita dapat mengubahnya kembali menjadi variabel faktor setelah menambahkan baris baru:

 #convert team variable to character
df$team <- as. character (df$team)

#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)

#convert team variable back to factor
df$team <- as. factor (df$team)

#view updated data frame
df

  team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 C 100

Perhatikan bahwa kami berhasil menambahkan baris baru ke akhir bingkai data dan menghindari pesan peringatan.

Kami juga dapat memverifikasi bahwa nilai “C” ditambahkan sebagai tingkat faktor ke variabel tim :

 #view structure of updated data frame
str(df)

'data.frame': 6 obs. of 2 variables:
 $ team: Factor w/ 3 levels "A","B","C": 1 1 2 2 2 3
 $points: chr "99" "90" "86" "88" ...

Sumber daya tambahan

Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:

Cara memperbaikinya di R: argumen melibatkan jumlah baris yang berbeda
Cara memperbaiki kesalahan R: dalam memilih argumen yang tidak digunakan
Cara memperbaiki di R: penggantian memiliki panjang nol

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *