Есть ли способ сравнить столбцы в двух фреймах данных с различными номерами столбцов и удалить строки, которые не соответствуют определенному столбцу? - PullRequest
0 голосов
/ 17 мая 2019

У меня есть 2 кадра данных: all_species (155 obs, 1 var) и all_taxa (33124 obs, 8 переменных).Я хочу найти наблюдение, присутствующее в столбце all_species$species в столбце all_taxa$species, и сохранить только эти наблюдения в кадре данных all_taxa, в результате чего получим 155 obs из 8 переменных.

Пока я создал два вектора:

species_vector_2 <- as.vector(all_species$Species)
all_taxa_vector <- as.vector(all_taxa $Species)

Затем я использовал следующий код, чтобы определить, присутствует ли species_vector_2 в all_taxa_vector:

all_taxa %in% species_vector_2

Вывод дает мне длинный список значений TRUE или FALSE.Я хочу удалить значения FALSE из кадра данных all_taxa.Поэтому я попытался проиндексировать фрейм данных:

all_taxa[(all_taxa_vector %in% species_vector_2)]

Это дает мне следующую ошибку:

Error: Length of logical index vector for `[` must equal number of columns (or 1):
* `.data` has 8 columns
* Index vector has length 33124
Call `rlang::last_error()` to see a backtrace

Итак, мой вопрос, есть ли способ индексировать это на основе конкретного столбцаЯ хочу индексировать (all_taxa$species).

Идеальным решением было бы то, что all_taxa фрейм данных включал ТОЛЬКО виды из all_species$species, сохраняя при этом другие переменные, присутствующие в all_taxa.Таким образом, all_taxa будет иметь 155 наблюдений и 8 переменных.

all_species фрейм данных

                 Species
1         Ichthyomyzon castaneus
2            Ichthyomyzon fossor
3         Ichthyomyzon unicuspis
4           Lethenteron appendix
5             Petromyzon marinus
6           Oreochromis niloticus

all_taxa фрейм данных

SpecCode Species                 Genus        Subfamily           Family        Order       Class         SuperClass 
     <dbl> <chr>                   <chr>        <chr>               <chr>         <chr>       <chr>         <chr>      
1        2 Oreochromis niloticus   Oreochromis  Pseudocrenilabrinae Cichlidae     Perciformes Actinopteryg~ Osteichthy~
2        3 Oreochromis mossambicus Oreochromis  Pseudocrenilabrinae Cichlidae     Perciformes Actinopteryg~ Osteichthy~
3        4 Engraulis ringens       Engraulis    Engraulinae         Engraulidae   Clupeiform~ Actinopteryg~ Osteichthy~
4        5 Orthopristis chrysopte~ Orthopristis Haemulinae          Haemulidae    Perciformes Actinopteryg~ Osteichthy~
5        6 Coryphaena hippurus     Coryphaena   NA                  Coryphaenidae Perciformes Actinopteryg~ Osteichthy~
6        7 Coryphaena equiselis    Coryphaena   NA                  Coryphaenidae Perciformes Actinopteryg~ Osteichthy~

1 Ответ

0 голосов
/ 17 мая 2019

Трудно знать наверняка без воспроизводимых наборов данных, но я думаю, что это должно работать:

library("tidyverse")

all_taxa %>% 
    filter(species %in% unique(all_species$species))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...