Я довольно новичок в R и особенно в аккуратном стихе. Я пытаюсь написать скрипт, с помощью которого мы можем переписать список таксонов. У нас уже есть один, использующий довольно много циклов for и if, и я хочу попытаться упростить его с помощью tidyverse, но я как бы застрял, как это сделать.
у меня есть таблица, которая выглядит примерно так (очень упрощенно)
taxon_file<- tibble(name = c( "cockroach","cockroach2", "grasshopper", "spider", "lobster", "insect", "crustacea", "arachnid"),
Id = c(445,448,446,778,543,200,400,300),
parent_ID = c(200,200,200,300,400,200,400,300),
rank = c("genus","genus","genus","genus","genus","order","order","order")
)
+-------------+-----+-----------+----------+
| name | Id | parent_ID | rank |
+=============+=====+===========+==========+
| cockroach | 445 | 200 | genus |
| cockroach2 | 448 | 200 | genus |
| grasshopper | 446 | 200 | genus |
| spider | 778 | 300 | genus |
| lobster | 543 | 400 | genus |
| insect | 200 | 200 | order |
| crustacea | 400 | 400 | order |
| arachnid | 300 | 300 | order |
+-------------+-----+-----+------------+----------+
Теперь я хочу изменить его так, чтобы я получил новый столбец, в который я могу добавить порядок, соответствующий parent_ID (поэтому, когда parent_ID == ID, введите имя в порядке столбцов). Конечный результат должен выглядеть примерно так
+-------------+------------+------+-----------+
| name | order | Id | parent_ID |
+=============+============+======+===========+
| cockroach | insect | 445 | 200 |
| cockroach2 | insect | 448 | 200 |
| grasshopper | insect | 446 | 200 |
| spider | arachnid | 778 | 300 |
| lobster | crustacea | 543 | 400 |
+-------------+------------+------+-----------+
Я пытался объединить mutate с оператором ifelse, но это просто добавляет NA ко всему столбцу заказа.
tibble назван таксон_лист
taxon_list %>%
mutate(order = ifelse(parent_ID == Id, Name, NA))
Я знаю, что это не сработает, потому что он не ищет во всем наборе данных правильную строку (это то, что я делал раньше с помощью циклов for). Может быть, кто-то может указать мне правильное направление?