将数据框的每一列除以另一个数据框的所有列

时间:2016-06-24 11:53:28

标签: r loops dataframe

我有两个名为“data”和“benchmark”的数据帧。 “数据”由四个时间序列A,B,C和D组成。“基准”由五个时间序列B1,B2,B3,B4,B5组成。

我想将“数据”的每一列划分为“基准”的所有列。所以,总共得到20个时间序列。当我尝试以下代码时,我收到错误消息,我选择了未经分类的列。

benchmark <- read.csv("benchmark.csv") # Read in benchmark data
benchmark.names <- colnames(benchmark)
benchmark.names <- benchmark.names[2:length(benchmark)] # Skip first column to exclude date column

data <- read.csv("data.csv") # Read in data
data.names <- colnames(data)
data.names <- data.names[2:length(data)] # Skip first column to exclude date column

for(i in data[, data.names]){
    tmp <- data.frame()
    for(k in benchmark[, benchmark.names]){
        tmp <- data[, i]/benchmark[, k]
    }
div <- rbind(div,tmp)
}

一些额外信息:最终,我想将这些划分的时间序列用于Mann-Kendall趋势测试 关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

我们可以使用 mini_batches = round(Int, ceil(X / 100)) for i=1:mini_batches mini_batch[i] = X[((i-1)*100 + 1):min(i*100, end)] file[i]= jldopen("/path to my file/mydata.jld", "w") write(file, "mini_batch", mini_batch) # alternatively, say "@write file mini_batch" lose(file) end end

lapply

如果我们需要 lst <- lapply(data, function(x) x[col(benchmark[-1])]/benchmark[-1]) 输出

rbind