我有一个名为"d“的dataframe,有11个变量和170行。我想以9,10和11 (d$CH4,d$CO2,d$N2O)的数值操作,并创建一个新的df dr$CH4,dr$CO2,dr$N2O列,以节省操作的结果。它由一系列的子串组成。我一个接一个做了。对于第9栏(d$CH4),如下所示: d2,9 - d1-9,然后d4,9 - d3-9,d6,9 - d5-9等,以一列(dr$CH4)和85行结束,每一次减法的结果。然后,我将在另外两列中重复这个过程。基本上,每一行奇数减去以前的偶数行。我尝试过这样做,但它只会给出一个空的df作为输出。
dr<- d[,9:11]
dr[,1:3] <- NA #saving the names of the columns
j<-0
for (i in d$CH4){
dr[j,1] <- d[(i+1),9] - d[i, 9]
j+1
}发布于 2022-01-21 14:18:25
我建议一种没有任何循环的解决方案--您只需将data.frame转换为一个,然后减去原始的一个,例如:
d <- data.frame(matrix(runif(170*11), ncol=11, nrow=170))
dr<- d[,9:11] #getting subset
dr_help <- dr[2:nrow(d),] #shifting
result <- dr_help - dr[1:(nrow(dr)-1),] #calculation (equal to i+1 - i)另外,请注意,您的新data.frame比原来的要短一个,因为您无法计算最后一个条目,因为i+1将大于nrow(d)。
https://stackoverflow.com/questions/70802458
复制相似问题