在R中合并来自不同数据帧的不同列

在R中合并来自不同数据帧的不同列,r,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

我有以下两个数据帧:

数据帧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
值,以及从数据框1中获取同一类的前两行的
Coverage
值,并将它们组合在一起,如下所示:

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
请注意,始终保证在两个数据帧中每个类至少有两行

你知道我怎么做吗?

这样行吗

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

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

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

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

这里有一种使用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)

这里有一种使用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)