R- Как переставить строки в фрейме данных с внешним ключом из другого фрейма данных - PullRequest
0 голосов
/ 01 марта 2020

У меня возникли проблемы с попыткой выяснить, как переставить строки в фрейме данных в R.

У меня есть два фрейма данных, которые находятся в разном порядке, и оба имеют идентификатор, который идентифицирует алкогольные напитки Теперь я хотел бы изменить порядок фрейма данных 1 (ID 1), чтобы он был в том же порядке, что и фрейм данных 2 (ID2).

Большое спасибо заранее.

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Создание столбца восходящих целых чисел во фрейме данных 2 для кодирования порядка. Затем объедините этот столбец с фреймом данных 1 и выполните сортировку по нему.

library(dplyr)

df1 <- tibble(
  id = c(1, 2, 3),
  col1 = c('a', 'b', 'c')
)

df2 <- tibble(
  id = c(3, 1, 2),
  col2 = c('c', 'a', 'b')
)

df2$ordering <- sequence(nrow(df2))

df1_ordered <- df1 %>%
  left_join(df2, by = 'id') %>%
  arrange(ordering)

0 голосов
/ 01 марта 2020

Мы можем использовать match для сопоставления идентификаторов, а затем изменить порядок df1 на его основе. Использование данных @Chris

df1[match(df2$id, df1$id),]

#     id col1 
#  <dbl> <chr>
#1     3 c    
#2     1 a    
#3     2 b    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...