使用dplyr计算每次访问的两个因素的比率 [英] calculate ratio of two factors for each visit using dplyr

查看:71
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆