Cara memperbaiki di r: error in rbind(deparse.level,…): nomor kolom argumen tidak cocok
Kesalahan yang mungkin Anda temui di R adalah:
Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
Kesalahan ini terjadi ketika Anda mencoba menggunakan fungsi rbind() di R untuk mengikat dua atau lebih bingkai data yang tidak memiliki jumlah kolom yang sama.
Tutorial ini menjelaskan dengan tepat cara memperbaiki kesalahan ini.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita memiliki dua frame data berikut di R:
#create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
y=c(4, 4, 2, 8, 10))
df1
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
y=c(3, 6, 2, 0, 0),
z=c(2, 7, 7, 8, 15))
df2
X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15
Sekarang misalkan kita mencoba menggunakan rbind untuk mengikat dua frame data ini menjadi satu frame data:
#attempt to row-bind the two data frames together
rbind(df1, df2)
Error in rbind(deparse.level, ...):
numbers of columns of arguments do not match
Kami menerima kesalahan karena kedua bingkai data tidak memiliki jumlah kolom yang sama.
Bagaimana cara memperbaiki kesalahan tersebut
Ada dua cara untuk mengatasi masalah ini:
Metode 1: Gunakan rbind pada kolom umum
Salah satu cara untuk mengatasi masalah ini adalah dengan menggunakan fungsi intersect() untuk menemukan nama kolom yang umum di antara bingkai data, lalu menautkan bingkai data hanya pada kolom tersebut:
#find common column names
common <- intersect(colnames(df1), colnames(df2))
#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])
#view result
df3
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0
Metode 2: Gunakan bind_rows() dari dplyr
Cara lain untuk mengatasi masalah ini adalah dengan menggunakan fungsi bind_rows() dari paket dplyr , yang secara otomatis mengisi nilai NA untuk nama kolom yang tidak cocok:
library (dplyr)
#bind together the two data frames
df3 <- bind_rows(df1, df2)
#view result
df3
X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15
Perhatikan bahwa nilai NA diisi untuk nilai df1 karena kolom z tidak ada dalam bingkai data ini.
Sumber daya tambahan
Tutorial berikut menjelaskan cara mengatasi kesalahan umum lainnya di R:
Cara memperbaiki di R: Nama tidak sesuai dengan nama sebelumnya
Cara memperbaikinya di R: panjang benda yang lebih panjang bukan kelipatan panjang benda yang lebih pendek
Cara memperbaikinya di R: kontras hanya dapat diterapkan pada faktor dengan 2 level atau lebih