簡體   English   中英

R:按列合並不同大小的數據幀

[英]R: Merge different size dataframes by column

我目前正在嘗試合並在R中共享一列的兩個數據幀。這不應該是一個問題,但我在使用合並時遇到了一個奇怪的錯誤。 (這是測試數據,表格是從csv的read.csv2導入的)

數據幀1:

match                              similar
aa.alcoholics_anonymous.n.01       mission.n.01
aa.associate_in_arts.n.01          associate_in_nursing.n.01
abbreviation.abbreviation.n.01     word.n.01  
abbreviation.abbreviation.n.02     truncation.n.03
aberration.aberrance.n.01          varix.n.01
aberration.aberration.n.02         dissociative_disorder.n.01
aberration.aberration.n.03         tyndall_effect.n.01 
abnormality.abnormality.n.01       varix.n.01
abnormality.abnormality.n.02       imbecility.n.01
abnormality.abnormality.n.03       unusualness.n.01

數據幀2:

match                            wordnet_number
aa.alcoholics_anonymous.n.01     2
aa.associate_in_arts.n.01        3
abbreviation.abbreviation.n.01   1
aberration.aberrance.n.01        1
aberration.aberration.n.02       2
aberration.aberration.n.03       3
abnormality.abnormality.n.01     1

期望的結果應如下所示:

match                            similar                   Wordnet_number
aa.alcoholics_anonymous.n.01     mission.n.01               2
aa.associate_in_arts.n.01        associate_in_nursing.n.01  3
abbreviation.abbreviation.n.01   word.n.01                  2
abbreviation.abbreviation.n.02   truncation.n.03            NA
aberration.aberrance.n.01        varix.n.01                 1
aberration.aberration.n.02       dissociative_disorder.n.01 2
aberration.aberration.n.03       tyndall_effect.n.01        3
abnormality.abnormality.n.01     varix.n.01                 1
abnormality.abnormality.n.02     imbecility.n.01            NA
abnormality.abnormality.n.03     unusualness.n.01           NA

通常,按“匹配”列合並應該可以正常工作嗎? (之前做過類似的),但由於某種原因,我一直得到這個結果:

total < - merge(test1,test2,by =“match”,all = TRUE)

match                           similar                   wordnet_number
aa.alcoholics_anonymous.n.01    mission.n.01              NA
aa.associate_in_arts.n.01       associate_in_nursing.n.01 NA
abbreviation.abbreviation.n.01  word.n.01                 NA
abbreviation.abbreviation.n.02  truncation.n.03           NA
aberration.aberrance.n.01       varix.n.01                NA
aberration.aberration.n.02     dissociative_disorder.n.01 NA
aberration.aberration.n.03      tyndall_effect.n.01       NA
abnormality.abnormality.n.01    varix.n.01                NA
abnormality.abnormality.n.02    imbecility.n.01           NA
abnormality.abnormality.n.03    unusualness.n.01          NA
aa.alcoholics_anonymous.n.01    NA                         2
aa.associate_in_arts.n.01       NA                         3
abbreviation.abbreviation.n.01  NA                         1
aberration.aberrance.n.01       NA                         1
aberration.aberration.n.02      NA                         2
aberration.aberration.n.03      NA                         3
abnormality.abnormality.n.01    NA                         1

可能是一個愚蠢的錯誤,但我該如何解決這個問題呢?

謝謝!

根據help(merge) ,在僅在一列上合並數據幀時,應使用不incomparables = NA 看起來它就是這里的訣竅。

merge(test1, test2, by = "match", all = TRUE, incomparables = NA)
#                             match                    similar wordnet_number
# 1    aa.alcoholics_anonymous.n.01               mission.n.01              2
# 2       aa.associate_in_arts.n.01  associate_in_nursing.n.01              3
# 3  abbreviation.abbreviation.n.01                  word.n.01              1
# 4  abbreviation.abbreviation.n.02            truncation.n.03             NA
# 5       aberration.aberrance.n.01                 varix.n.01              1
# 6      aberration.aberration.n.02 dissociative_disorder.n.01              2
# 7      aberration.aberration.n.03        tyndall_effect.n.01              3
# 8    abnormality.abnormality.n.01                 varix.n.01              1
# 9    abnormality.abnormality.n.02            imbecility.n.01             NA
# 10   abnormality.abnormality.n.03           unusualness.n.01             NA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM