【发布时间】:2018-10-10 04:33:21
【问题描述】:
我有一个包含 3 列的数据框,每列包含少量值:
> df
# A tibble: 364 x 3
A B C
<dbl> <dbl> <dbl>
0. 1. 0.100
0. 1. 0.200
0. 1. 0.300
0. 1. 0.500
0. 2. 0.100
0. 2. 0.200
0. 2. 0.300
0. 2. 0.600
0. 3. 0.100
0. 3. 0.200
# ... with 354 more rows
> apply(df, 2, table)
$`A`
0 1 2 3 4 5 6 7 8 9 10
34 37 31 32 27 39 29 28 37 39 31
$B
1 2 3 4 5 6 7 8 9 10 11
38 28 38 37 32 34 29 33 30 35 30
$C
0.1 0.2 0.3 0.4 0.5 0.6
62 65 65 56 60 56
我想创建第四列,其中将包含每一行每个值与每个组的频率的乘积。因此,例如,“Freq”列的第一个值将是 A 列中 0 的频率、B 列中 1 的频率和 C 列中 0.1 的频率的乘积。
如何使用 dplyr/baseR 有效地做到这一点?
要强调的是,这不是每行总频率的组合,而是 1 列频率的乘积
【问题讨论】:
-
最后一行呢? A 列有 11 个元素,B 列也有 11 个元素,而 C 列有 6 个元素。那么你该怎么做呢?