我有以下数据框(前15行),我将其命名为“ tableIOPT”:
IO PT FA FR
1 não-orientado_gerúndio forma-base 0 0%
2 não-orientado_infinitivo forma-base 0 0%
3 não-orientado_particípio_masculino forma-base 0 0%
4 orientado_finito_passado_imperfectivo forma-base 0 0%
5 orientado_finito_passado_perfectivo_I forma-base 0 0%
6 orientado_finito_passado_volitivo forma-base 1 100%
7 orientado_finito_presente forma-base 0 0%
8 orientado_não-finito_imperativo_I forma-base 0 0%
9 orientado_não-finito_subjuntivo_condicional forma-base 0 0%
10 orientado_não-finito_subjuntivo_conjuntivo forma-base 0 0%
11 ZERO forma-base 3 27.27%
12 não-orientado_gerúndio modal 0 0%
13 não-orientado_infinitivo modal 0 0%
14 não-orientado_particípio_masculino modal 0 0%
15 orientado_finito_passado_imperfectivo modal 0 0%
我需要按“ PT”列上的组计算“ FA”列上的小计。例如:总共有4个“ forma-base”。
我不是专家,但是我知道简单地计算小计并不难。我使用margin.table(tabelaIOPT,2),它完美地显示了结果。问题是我稍后将进行一些统计测试,并且我需要在同一数据框中显示这些小计。
这是我已经尝试过的:
for (i in length(subtotals)) {
tableIOPT[grep(names(subtotals)[i],tableIOPT[,2]),5] <- subtotals[i]
}
这些“小计”很简单(当它是一个表时,在我将其制成数据框之前):
subtotals <- margin.table(tableIOPT,2)
尤其是tableIOPT有99行。但是我还有很多其他具有相同配置的数据帧。
在这种情况下,预期结果为:“ 4、4、7、10、7、19、13、2、6”表示“形式基础,模态,n-oientorado_gerúndio,n-o-orientado_infinitivo,não-orientado_particípio, orientado_finito_passado,orientado_finito_presente,orientado_não-finito_imperativo,“零”。
这就是为什么我在末尾添加第五列,然后尝试在其中“粘贴”结果的原因。但是,此循环仅适用于小计向量的最后一个元素。
答案 0 :(得分:0)
这是您要寻找的吗?
library(dplyr)
tableIOPT %>%
group_by(PT) %>%
mutate(subtotals = sum(FA))
答案 1 :(得分:0)
使用data.table
,您可以按组汇总为
library(data.table)
# turn your data.frame into a data.table
tableIOPT <- setDT(tableIOPT)
# add a column subtot, containing the original number of rows
tableIOPT <- tableIOPT[, subtot := sum(FA), by = "PT"]
# or simply the subtotals per group
tableIOPT[, list(subtot = sum(FA)), by = "PT"]