слияние не работает должным образом: внутреннее объединение не возвращает все соответствующие строки из столбца 1 - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть два набора данных, x и y, и я пытаюсь сопоставить один столбец от x до первого столбца y, но слияние не выводит правильное количество совпадений.

Пример:

>x
species
Anisognathus_lacrymosus 
Anisognathus_notabilis 
Bangsia_melanochlamys 
Cnemathraupis_aureodorsalis
Catamenia_homochroa 
Chrysothlypis_salmoni 
Conirostrum_bicolor 
Conirostrum_rufum 

>y
species ln.mass
Acanthidops_bairdi  2.772588722
Anisognathus_igniventris    3.526360525
Anisognathus_lacrymosus 3.433987204
Anisognathus_melanogenys    3.713572067
Anisognathus_notabilis  3.663561646
Anisognathus_somptuosus 3.784189634
Bangsia_arcaei  3.616308761

вывод:

> merge(x,y)
[1] species ln.mass
<0 rows> (or 0-length row.names)

Желаемый вывод:

species ln.mass
Anisognathus_lacrymosus 3.433987204
Anisognathus_notabilis  3.663561646

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я попытался с пакетами match и dplyr и получил вывод.

x<- data.frame(species=c(
"Anisognathus_lacrymosus",
"Anisognathus_notabilis", 
"Bangsia_melanochlamys",
"Cnemathraupis_aureodorsalis",
"Catamenia_homochroa",
"Chrysothlypis_salmoni",
"Conirostrum_bicolor",
"Conirostrum_rufum" ))
y<-data.frame(species =c(
              "Acanthidops_bairdi",  
              "Anisognathus_igniventris",
              "Anisognathus_lacrymosus",
              "Anisognathus_melanogenys",    
              "Anisognathus_notabilis",
              "Anisognathus_somptuosus", 
              "Bangsia_arcaei"),
              ln.mass=c(2.772588722,3.526360525,3.433987204,3.713572067,3.663561646,3.784189634,3.616308761))

library(dplyr)
z<-y[match(x$species,y$species),]%>%na.omit()

ВЫВОД:

                  species  ln.mass
3 Anisognathus_lacrymosus 3.433987
5  Anisognathus_notabilis 3.663562
0 голосов
/ 05 ноября 2018

Вы должны присоединиться к полю видов.

merge(x,y, by="species")

Обновление: я сделал ваш код и получил результат, который вы ожидали enter image description here

Проверьте наличие пробелов в тексте.

x$species <- gsub('\\s+', '', x$species)
y$species <- gsub('\\s+', '', y$species)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...