我有一个由不同组制作的数据框,以及每组真实值和预测值。我想提取这些值的测试值:
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可以做些什么,但我找不到。
答案 0 :(得分:0)
如果它始终是您要提取的每个组的第一行,则可以使用do
函数:
d %>% do(.[1,])
另一种选择是使用这样的过滤函数:
d %>% filter(seq_along(sp) == 1)