【发布时间】:2019-11-30 07:09:27
【问题描述】:
我有一个这样的数据框(df):
Rif A1 A2 A3 A4 A5 B1 B2 B3 B4 B5
a1 1 1 0 3 7 10 10 7 7 7
b1 3 3 3 0 0 5 5 5 5 0
c1 1 3 0 0 2 3 3 3 3 3
我需要按如下方式计算 Vs 列表:
V1: mean(A5:A5)/mean(B5:B5)
V2: mean (A4:A5) / mean (B4:B5)
V3: mean (A3:A5) / mean (B3:B5)
....
我认为我应该使用 for 循环。我试过下面写的循环,但它不起作用:
ref <- c(1, 2, 3, 4, 5)
dat1 <- NULL
for (i in 2:length(ref)) {
for (j in 1:nrow(df)) {
dat1[j] <- rowMeans(df[j,i-1:6])/rowMeans(df[j,i+6-1:11])
}
df[,paste0("V", i)] <- dat1
}
我期望的输出是这样的:
Rif A1 A2 A3 A4 A5 B1 B2 B3 B4 B5 V1 V2 V3 V4 V5
a1 1 1 0 3 7 10 10 7 7 7
b1 3 3 3 0 0 5 5 5 5 0
c1 1 3 0 0 2 3 3 3 3 3
【问题讨论】:
-
您使用什么语言?请编辑您的标签以包含它。请花一些时间阅读how to ask good questions 和this question checklist。
-
我正在使用 R 语言
-
i-1:6与i-(1:6)相同;你想要(i-1):6
标签: r loops for-loop rows mean