使用dplyr计算每次访问的两个因素的比率 [英] calculate ratio of two factors for each visit using dplyr
本文介绍了使用dplyr计算每次访问的两个因素的比率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用 dplyr
来计算对象每次访问时两个因子之比的向量。可以在下面创建模拟数据:
I'd like to use dplyr
to calculate a vector of ratios of two factors for each visit of a subject. The mock data can be created below:
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
需要的是对于每个主题,因素( factor
) N相对于 L的值( aval
)的比率( subj
),每次访问(访问
)。例如,第一个比率值为 -1.375
,来自 -0.33 / 0.24
。谢谢!
What is needed is the ratio of value (aval
) for the factors (factor
) "N" over "L", for each subject (subj
) for each visit (vist
). For example, the first ratio value would be -1.375
, coming from -0.33/0.24
. Thanks!
推荐答案
您可以使用tidyr中的价差
重塑数据。包,那么很容易计算出新列:
You can reshape the data with spread
from the tidyr package, then it's easy to calculate a new column:
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
这篇关于使用dplyr计算每次访问的两个因素的比率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文