如何使用dplyr函数存储索引值

时间:2017-07-25 20:32:08

标签: r dplyr max which

我收集的数据(dat)有2个不同的桶,同一组(“Set”)的所有部分都填充了随机数量的大理石(“Marbles”) 有两种处理方式,“颜色”(蓝色/白色)和“尺寸”(小/大)。每个试验都在不同的“块”(即时间段)中完成。 2个桶都是一组的一部分。记录桶的位置(“位置”)。这是一个数据样本。

Map

对于每个独特的复制品(即颜色,组合,块,大小的唯一组合),我想找到大理石最大值的索引位置。

Colour Set Size    Position  Marbles Block
Blue     1   Small  1         8     1
Blue     1   Small  2         81    1
Blue     6   Small  1         14    2
Blue     6   Small  2         11    2
Blue     1   Large  4         0     1
Blue     1   Large  5         0     1
Blue     1   Large  1         3     1
Blue     1   Large  2         43    1
White    1   Small  1         8     1
White    1   Small  2         81    1
White    1   Small  6         7     1
White    6   Small  3         12    2
White    6   Small  4         25    2
White    2   Large  1         86    1
White    2   Large  2         77    1
White    1   Large  1         3     11
White    1   Large  2         43    11

我一直遇到错误,说找不到“%>%”。我验证了dplyr的安装,并确保从库中调用它。但是,我无法检测到这个问题,并且想知道它可能是一个我无法捕获的语法错误?

1 个答案:

答案 0 :(得分:1)

第一条规则:从不永远在dplyr 之后加载plyr:)

现在回答这个问题。这将获得具有组内最大弹珠数的行的索引:

library(dplyr)
result_df <- dat %>% 
  group_by(colour, size, block, set) %>%
  mutate(result = (marbles == max(marbles)))
result_vec <- which(result_df$result)

如果你想要布尔索引,你可以省略which()