基于多个过滤器

时间:2018-01-23 03:33:49

标签: r dplyr

如果我有数据框

x = data.frame(x = c(1, 1, 2, 2), y = c(1, 2, 2, 2))

我想使用dplyr来确定按y分组的x每个值的分数。

所以答案应该是

x y1 y2
1 .5 .5
2 0  1

1 个答案:

答案 0 :(得分:0)

您可以使用dplyr count()group_by() / mutate()和tidyr' s spread()执行此操作:

library(dplyr)
library(tidyr)

x %>%
  count(x, y = paste0("y", y)) %>%
  group_by(x) %>%
  mutate(n = n / sum(n)) %>%
  spread(y, n, fill = 0)