Как преобразовать содержимое фрейма данных из двух столбцов на основе номера строки другого фрейма данных - PullRequest
1 голос
/ 28 октября 2019

У меня есть два кадра данных. Один - это фрейм данных, который содержит только имена

library(tidyverse)
df1 <- structure(list(name1 = c("B2m", "Itm2b", "Itm2b"), name2 = c("Cd44", 
"Atp1b2", "Sppl2b")), row.names = c(NA, -3L), class = c("tbl_df", 
"tbl", "data.frame"))

df1
# A tibble: 3 x 2
  name1 name2 
  <chr> <chr> 
1 B2m   Cd44  
2 Itm2b Atp1b2
3 Itm2b Sppl2b

Другой - фрейм данных, в котором хранятся все имена выше:

df2 <- structure(list(name = structure(c(2L, 3L, 1L, 5L, 4L), .Label = c("Atp1b2", 
"B2m", "Cd44", "Itm2b", "Sppl2b"), class = "factor")), row.names = c(NA, 
-5L), class = c("tbl_df", "tbl", "data.frame"))

df2
# A tibble: 5 x 1
  name  
  <fct> 
1 B2m   
2 Cd44  
3 Atp1b2
4 Sppl2b
5 Itm2b 

Что я хочу преобразовать df1 в числовую паруна основе номера строки в df2, что дает:

name1 name2
1     2
5     3
5     4

Как мне это удобно сделать?

1 Ответ

3 голосов
/ 28 октября 2019

Вы можете использовать:

sapply(df1, match, df2$name)

     name1 name2
[1,]     1     2
[2,]     5     3
[3,]     5     4

или то же самое, используя tidyverse:

library(purrr)

map_df(df1, match, df2$name)

# A tibble: 3 x 2
  name1 name2
  <int> <int>
1     1     2
2     5     3
3     5     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...