我有一个日期框架,其中包含字段PARTIDA(日期),Operação(4级因子)和TT(数字)。
我需要按PARTIDA列分组,将Operation列计数到每个级别的频率,然后将TT列求和。 像这样:
我已经尝试过使用dplyr进行操作,但无法获得此结果,有人可以帮助我吗?
答案 0 :(得分:0)
这里有两个步骤,可能会为您提供所需的东西:
library(dplyr)
df <-
tibble(
partida = c("date1", "date2", "date3", "date1", "date2"),
operacao = c("D", "J", "C", "D", "M"),
tt = c(1, 2, 3, 4, 5)
)
tt_sums <-
df %>%
group_by(partida) %>%
count(wt = tt)
operacao_counts <-
df %>%
group_by(partida, operacao) %>%
count() %>%
ungroup() %>%
spread(operacao, n) %>%
mutate_if(is.numeric, replace_na, 0)
final_df <-
operacao_counts %>%
left_join(tt_sums, by = "partida")
> final_df
# A tibble: 3 x 6
partida C D J M n
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 date1 0 2 0 0 5
2 date2 0 0 1 1 7
3 date3 1 0 0 0 3
答案 1 :(得分:0)
与@ cardinal40的答案类似,但是我尽力限制可能添加到我的环境中的对象的数量。答案都可以解决问题。
df %>%
group_by(partida) %>%
mutate(tt = sum(tt)) %>%
group_by(partida, operacao, tt) %>%
count() %>%
ungroup() %>%
spread(operacao, n) %>%
mutate_if(is.numeric, replace_na, 0)