从数据框中提取与组相关的结果

时间:2017-06-15 00:16:02

标签: r dataframe dplyr tidyr

我有一个由不同组制作的数据框,以及每组真实值和预测值。我想提取这些值的测试值:

library(dplyr)
 d = data.frame(group = c(rep(5,x="a"),rep(5,x="b")), real = c(rep(2, x=1:5)), pred = c(2,1,3,4,5,1,2,4,3,5))

group real pred
1      a    1    2
2      a    2    1
3      a    3    3
4      a    4    4
5      a    5    5
6      b    1    1
7      b    2    2
8      b    3    4
9      b    4    3
10     b    5    5

 d <- d %>% group_by(group) %>% mutate( sg = ifelse(real == 1 & real == pred, 1, 0))
 d <- d %>% group_by(group) %>% mutate( sp = ifelse(real <= 3 & pred <= 3, 1, 0))
 d %>% distinct(sg, sp)

sg    sp  group
1     0     1      a
2     0     0      a
3     1     1      b
4     0     1      b
5     0     0      b

但我想要这样的事情(每组只有1个结果)

 sg    sp  group
1     0     1      a
3     1     1      b

我很确定dplyr,data.table或tidyr可以做些什么,但我找不到。

1 个答案:

答案 0 :(得分:0)

如果它始终是您要提取的每个组的第一行,则可以使用do函数:

d %>% do(.[1,])

另一种选择是使用这样的过滤函数: d %>% filter(seq_along(sp) == 1)