Объединение разных столбцов из разных фреймов данных в R - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть следующие два фрейма данных:

фрейм данных 1:

Class    Total       AC
A        1000        0.6
A        965         0.34
B        1025        0.9
B        1002        0.37
B        684         0.55
C        896         0.77
C        927         0.86
C        1000        0.61
C        955         0.69

фрейм данных 2:

Class    Total       Coverage
A        925         0.6
A        744         0.94
A        1000        0.38
B        581         0.68
B        488         0.25
B        698         0.66
C        1020        0.33
C        845         0.18
C        1555        0.66

Я хочу только взять AC значение для первых двух строк для каждого класса из кадра данных 2, а также значение Coverage из первых двух строк для того же класса из кадра данных 1 и объединить их вместе, как показано ниже:

Class    AC         Coverage
A        0.6         0.6
A        0.34        0.94
B        0.9         0.68
B        0.37        0.25
C        0.77        0.33
C        0.86        0.18

Обратите внимание, что всегда гарантируется, что в каждом фрейме данных есть по крайней мере две строки для каждого класса.

Вы знаете, как я могу это сделать?

Ответы [ 2 ]

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

Вот способ использования dplyr -

df1 %>%
  group_by(Class) %>%
  mutate(rn = row_number()) %>%
  ungroup() %>%
  filter(rn %in% 1:2) %>%
  inner_join(
    df2 %>%
    group_by(Class) %>%
    mutate(rn = row_number()) %>% 
    ungroup() %>%
    filter(rn %in% 1:2),
    by = c("Class", "rn")
  ) %>%      
  select(Class, AC, Coverage)
0 голосов
/ 11 ноября 2018

Будет ли это работать?

Сначала объедините два фрейма данных.

df <- merge(df1$AC, df2$Coverage, by = "Class")

Во-вторых slice два лучших результата от каждой группы в классе:

library(dplyr)
df <- df %>%
      group_by(Class) %>%
      slice(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...