我是R的新手,有一件事我被一次又一次地告诉我,那就是真的不需要for循环。我在apply上取得了一些成功,但不知道如何在这个实例中使用它。
以下是我正在处理的数据:
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个单元格中价格列中的值的两倍。例如,第6列中的第1行是3.08,即第5列第4行中的2*1.54。我希望对第6行中的每个单元格执行此操作,直到第12行中的所有单元格都用完。NA在此行之后的第6列中没有问题。
下面是我是如何做到这一点的:
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谢谢。
发布于 2013-10-28 08:41:45
使用mydata$V6 <- 2 * c(mydata$Price[-(1:3)], rep(NA, 3))
发布于 2013-10-28 08:43:31
df1是您的数据。我在这里使用了sapply,它应该比for loop更快
df1$V6<-sapply(1:nrow(df1),function(x) 2*df1[x+3,5])https://stackoverflow.com/questions/19625473
复制相似问题