合并R中不同数据帧中的不同列

时间:2018-11-11 19:20:34

标签: r

我有以下两个数据帧:

数据框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

我想要的是对于数据帧2中的每个类仅获取前两行的AC值,对于数据帧中的同一类也仅获取前两行的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 :(得分:2)

这项工作可以吗?

首先将两个数据帧合并在一起。

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

第二次slice来自一个班级中每个组的前两个结果:

library(dplyr)
df <- df %>%
      group_by(Class) %>%
      slice(2)

答案 1 :(得分:2)

这是使用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)