我是R的新手,有一件事我一次又一次被告知,确实没有必要进行循环。我在申请方面取得了一些成功,但在这个例子中无法弄清楚如何使用它。
以下是我正在使用的数据:
Bid Ask Exp Strike Price V6
51 4.95 5.15 NOV1 13 335 5.050 3.08
52 3.40 3.50 NOV1 13 340 3.450 NA
53 2.28 2.42 NOV1 13 345 2.350 NA
54 1.51 1.57 NOV1 13 350 1.540 NA
55 0.99 1.07 NOV1 13 355 1.030 NA
56 0.66 0.71 NOV1 13 360 0.685 NA
57 0.46 0.51 NOV1 13 365 0.485 NA
58 0.33 0.37 NOV1 13 370 0.350 NA
59 0.25 0.28 NOV1 13 375 0.265 NA
60 0.18 0.24 NOV1 13 380 0.210 NA
61 0.11 0.20 NOV1 13 385 0.155 NA
62 0.05 0.17 NOV1 13 390 0.110 NA
63 0.05 0.16 NOV1 13 395 0.105 NA
64 0.07 0.13 NOV1 13 400 0.100 NA
在第6列(称为V6)中,我希望值为当前行下方3的单元格中price列中的值的两倍。例如,Col 6中的第1行是3.08,它是2 * 1.54,位于第5行第4行。我想对第6行中的每个单元格执行此操作,直到它在第12行中用完为止。在第6列中,NA很好在这一行之后。
以下是我完成此操作的方法:
for (i in 1:11){
data[i,6] <- 2*data[i+3,5]}
有更快/更容易/更合适的方法吗?
这是我想要的最终数据。
Bid Ask Exp Strike Price V6
51 4.95 5.15 NOV1 13 335 5.050 3.08
52 3.40 3.50 NOV1 13 340 3.450 2.06
53 2.28 2.42 NOV1 13 345 2.350 1.37
54 1.51 1.57 NOV1 13 350 1.540 0.97
55 0.99 1.07 NOV1 13 355 1.030 0.70
56 0.66 0.71 NOV1 13 360 0.685 0.53
57 0.46 0.51 NOV1 13 365 0.485 0.42
58 0.33 0.37 NOV1 13 370 0.350 0.31
59 0.25 0.28 NOV1 13 375 0.265 0.22
60 0.18 0.24 NOV1 13 380 0.210 0.21
61 0.11 0.20 NOV1 13 385 0.155 0.20
62 0.05 0.17 NOV1 13 390 0.110 NA
63 0.05 0.16 NOV1 13 395 0.105 NA
64 0.07 0.13 NOV1 13 400 0.100 NA
谢谢。
答案 0 :(得分:1)
使用mydata$V6 <- 2 * c(mydata$Price[-(1:3)], rep(NA, 3))
答案 1 :(得分:0)
df1是您的数据。我在这里使用了sapply
,它应该比for loop
df1$V6<-sapply(1:nrow(df1),function(x) 2*df1[x+3,5])