我有以下两个数据帧:
数据框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
请注意,始终保证两个数据帧中每个类至少有两行。
你知道我该怎么做吗?
答案 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)