【问题标题】:Operate with index in a column of a dataframe in R在 R 中的数据框的列中使用索引进行操作
【发布时间】:2022-01-21 13:55:52
【问题描述】:

我有一个名为“d”的数据框,其中包含 11 个变量和 170 行。我想使用 9,10 和 11th (d$CH4, d$CO2, d$N2O) 中的值进行操作,并创建一个新的 df dr$CH4, dr$CO2, dr$N2O 列来保存操作结果.它由一系列减法组成。我一一做了。第 9 列 (d$CH4) 如下: d[2,9] - d[1-9] 然后 d[4,9] - d[3-9] , d[6,9] - d [5-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

}

【问题讨论】:

  • 请使用dput()提供一小部分数据样本。

标签: r for-loop indexing


【解决方案1】:

我会建议一个没有任何循环的解决方案 - 你可以将你的 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)

【讨论】:

    猜你喜欢
    • 2021-05-07
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多