Saya memiliki kumpulan data ini:

data_a <- data.frame(label = c("A","B","C","D"))
data_b <- data.frame(lobel = c("C","D","B","A"),
                     parsu = c("TR","TR","TD","TD"))

Dan saya ingin data_a untuk mencocokkan grup parsu dengan menjaga urutan baris data_a sehingga hasil yang diharapkan adalah:

label   parsu
A       TD
B       TD
C       TR
D       TR

Yang saya coba adalah:

data_a %>% left_join(data_b, by = c("label","lobel"))

Tapi saya mendapatkan pesan kesalahan ini:

Error: Join columns must be present in data.
x Problem with `lobel`.

Tolong, bisakah Anda membantu saya dengan pertanyaan ini? Apa alasan saya tidak dapat menggabungkan dua bingkai data itu?

2
Alexis 27 Mei 2021, 22:51

3 jawaban

Jawaban Terbaik
data.frame(label=data_b$lobel[match(data_a$label,data_b$lobel)],parsu=data_b$parsu[match(data_a$label,data_b$lobel)])

Ini memberikan bingkai data yang diinginkan dengan menyusun ulang data_b melalui fungsi match(). Cara lain adalah:

colnames(data_b)[1] <- "label"
data_b[match(data_a$label,data_b$label),]

2
Baroque 27 Mei 2021, 19:55

Kita dapat menggunakan merge dari base R

merge(data_a, data_b, all.x = TRUE, by.x = 'label', by.y = 'lobel')
2
akrun 27 Mei 2021, 22:57

Agar kode Anda berfungsi, Anda hanya perlu meletakkan = di antara nama kolom yang ingin Anda cocokkan. Biasanya ketika nama kolom tidak cocok, kami memberi tanda sama dengan di antara pasangan nama yang seharusnya cocok.

library(dplyr)

data_a %>%
  left_join(data_b, by = c("label" = "lobel"))

  label parsu
1     A    TD
2     B    TD
3     C    TR
4     D    TR
3
Anoushiravan R 27 Mei 2021, 20:03