R'deki hata nasıl düzeltilir: adlar önceki adlarla eşleşmiyor
R’de karşılaşabileceğiniz yaygın bir hata:
Error in match.names(clabs, names(xi)): names do not match previous names
Bu hata, iki veri çerçevesini bağlamak için rbind() işlevini kullanmaya çalıştığınızda ancak iki veri çerçevesinin sütun adları eşleşmediğinde ortaya çıkar.
Bu eğitimde, bu hatayı çözmek için kullanabileceğiniz adımların tamamı paylaşılmaktadır.
Örnek: “Adlar önceki adlarla eşleşmiyor” sorununu düzeltme
R’de aşağıdaki iki veri çerçevesine sahip olduğumuzu varsayalım:
#create and view first data frame df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df1 var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 #create and view first second frame df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) df2 var3 var4 1 3 1 2 3 1 3 6 2 4 6 8 5 8 9
Bu iki veri çerçevesini bağlamak için rbind() fonksiyonunu kullanmaya çalışırsak bir hata alırız:
#attempt to row bind the two data frames
rbind(df1, df2)
Error in match.names(clabs, names(xi)):
names do not match previous names
İki veri çerçevesinin sütun adları eşleşmediğinden bu hatayı alıyoruz.
İlk veri çerçevesi aşağıdaki sütun adlarına sahiptir:
- var1
- var2
İkinci veri çerçevesi ise aşağıdaki sütun adlarını içerir:
- var3
- var4
Sütun adlarının iki veri çerçevesi arasında aynı olup olmadığını kontrol etmek için aşağıdaki kodu bile kullanabiliriz:
#check if column names are identical between two data frames
identical(names(df1), names(df2))
[1] FALSE
Sütun adlarının aynı olmadığını görebiliriz.
Bu hatayı düzeltmek için, ikinci veri çerçevesindeki sütun adlarını, ilk veri çerçevesindeki sütun adlarıyla eşleşecek şekilde manuel olarak yeniden adlandırabiliriz:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- c(' var1 ', ' var2 ') #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
Sütun adları eşleştiğinden beri rbind() işlevinin iki veri çerçevesini başarıyla bağladığını görebiliriz.
Bu hatayı düzeltmenin başka bir yolu da, sütun adlarını ilk veri çerçevesinden ikinci veri çerçevesine otomatik olarak atamak için labels() işlevini kullanmak olacaktır:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- names(df1) #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
Yine rbind(), aynı sütun adlarını paylaştıklarından iki veri çerçevesini başarılı bir şekilde bağlayabilmektedir.
Ek kaynaklar
R’de rbind nasıl kullanılır (örneklerle)
R’de cbind nasıl kullanılır (örneklerle)
R’de bir veri çerçevesine satırlar nasıl eklenir