【发布时间】:2021-01-17 23:59:03
【问题描述】:
我有一个如下所示的数据框 (df):
Code Status Value
1 1 Treated 1.5
2 1 Treated 1.7
3 1 Treated 1.9
4 1 Control 2.1
5 1 Control 2.3
6 1 Control 2.5
7 2 Treated 1.6
8 2 Treated 1.8
9 2 Treated 2.0
10 2 Control 2.4
11 2 Control 2.6
12 2 Control 2.8
这是它的代码:
df <- data.frame(Code = rep(c(1:2), each = 6),
Status = rep(rep(c("Treated", "Control"), each = 3), 2),
Value = c(1.5, 1.7, 1.9, 2.1, 2.3, 2.5, 1.6, 1.8, 2.0, 2.4, 2.6, 2.8))
我需要将每个“控制”值的每个“处理”值划分为一个“代码”(1、2 等)。 基本上,我需要它或多或少地像这样工作:
# 1st "Value" in "Code" 1
df$Value[1]/df$Value[4]
df$Value[1]/df$Value[5]
df$Value[1]/df$Value[6]
# 2nd "Value" in "Code" 1
df$Value[2]/df$Value[4]
df$Value[2]/df$Value[5]
df$Value[2]/df$Value[6]
等等...为了做到这一点,我创建了一个 for 循环,如下所示:
for(i in 1:2){
for(j in 1:3){
x <- df$Value[df$Code == i & df$Status == "Treated"]
y <- df$Value[df$Code == i & df$Status == "Control"]
vector <- x/y[j]
print(vector)
}
}
结果如下所示。
[1] 0.7142857 0.8095238 0.9047619
[1] 0.6521739 0.7391304 0.8260870
[1] 0.60 0.68 0.76
[1] 0.6666667 0.7500000 0.8333333
[1] 0.6153846 0.6923077 0.7692308
[1] 0.5714286 0.6428571 0.7142857
我的问题是我需要对这些结果进行进一步的计算。 但是,当我尝试提取向量以便我可以使用它时,它只包含最后一个计算:
[1] 0.5714286 0.6428571 0.7142857
有没有更好的计算方法?
附:对于上下文:稍后我需要为每个“代码”计算 MFV(成员函数值),但我需要使用“值”中所有计算(除)值的最小值/最大值。
【问题讨论】:
标签: r