在R中减去数据表

时间:2015-10-09 05:16:05

标签: r

我有一个数据表dt,其中我想做列减法。我想输出一个新的数据表dt_op,其中,

dt <- acast(raw, a~b, value.var="z")

dt_op[1, 1] <- dt[1, 2] - dt[1, 1]
dt_op[1, 2] <- dt[1, 3] - dt[1, 1]
dt_op[1, 3] <- dt[1, 4] - dt[1, 1]
dt_op[1, 4] <- dt[1, 5] - dt[1, 1]
dt_op[1, 5] <- dt[1, 7] - dt[1, 6]
dt_op[1, 6] <- dt[1, 8] - dt[1, 7]

我想从1中减去2,3,4,5列,然后从6中减去第7,8,9,10列,依此类推。

我已尝试使用循环,但这很慢且不合适。

temp <- function(r) {
i = 1
l = length(r)
op <- list()
for(j in 2:l) {
  op[[j-1]] <- r[j] - r[i]
  if (j -i == 4) {
        j = j + 2
        i = i + 5
  }
  }  
return(op)
}

我通过在数据表上应用来调用它。如何正确地做到这一点?

1 个答案:

答案 0 :(得分:-2)

以下是使用重塑

的简短示例
library(dplyr)
library(tidyr)

df = data_frame(`1` = c(1, 2), `2` = c(2, 3), `3` = c(3, 4))

df %>%
  gather(variable, value, 2:3) %>%
  mutate(value = value - `1`) %>%
  spread(variable, value)