我想使用 dplyr
来计算一个主题的每次访问的两个因素的比率向量。可以在下面创建模拟数据:
subj = c(rep("A", 10), rep("B", 4), rep("C", 6))
vist = c(rep(c("C0", "C1", "C2", "C3", "C4"), each=2),
rep(c("C0", "C1"), each=2),
rep(c("C0", "C1", "C2"), each=2))
factor = c(rep(c("L", "N"), 5), rep(c("L", "N"), 2), rep(c("L", "N"), 3))
set.seed(111)
aval = round(rnorm(n = 20, 0, 1), 2)
dat = data.frame(subj, vist, factor, aval, stringsAsFactors = FALSE)
dat
看起来像:
subj vist factor aval
1 A C0 L 0.24
2 A C0 N -0.33
3 A C1 L -0.31
4 A C1 N -2.30
5 A C2 L -0.17
6 A C2 N 0.14
7 A C3 L -1.50
8 A C3 N -1.01
9 A C4 L -0.95
10 A C4 N -0.49
11 B C0 L -0.17
12 B C0 N -0.41
13 B C1 L 1.85
14 B C1 N 0.39
15 C C0 L 0.80
16 C C0 N -1.57
17 C C1 L -0.09
18 C C1 N -0.36
19 C C2 L -1.19
20 C C2 N 0.36
对于每次访问(
aval
)的每个主题( factor
),需要的是因子( subj
)“N”与“L”的值( vist
)的比率。例如,第一个比率值将是 -1.375
,来自 -0.33/0.24
。谢谢! 最佳答案
您可以使用 tidyr 包中的 spread
重塑数据,然后很容易计算出一个新列:
library(tidyr)
library(dplyr)
dat %>%
spread(factor, aval) %>%
mutate(ratio = N/L)
subj vist L N ratio
1 A C0 0.24 -0.33 -1.3750000
2 A C1 -0.31 -2.30 7.4193548
3 A C2 -0.17 0.14 -0.8235294
4 A C3 -1.50 -1.01 0.6733333
5 A C4 -0.95 -0.49 0.5157895
6 B C0 -0.17 -0.41 2.4117647
7 B C1 1.85 0.39 0.2108108
8 C C0 0.80 -1.57 -1.9625000
9 C C1 -0.09 -0.36 4.0000000
10 C C2 -1.19 0.36 -0.3025210
关于r - 使用 dplyr 计算每次访问的两个因素的比率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41508316/