R按列划分两个数据帧

时间:2017-03-29 07:51:13

标签: r dataframe division

我有两个大型数据帧(每个35,000 x 135 dim),它们还包含很多NA值。我想要的是将数据帧A中的每一列与前一列数据帧B的内容进行划分。具体来说,对于j = rows和i =列,A(j,2)/ B(j,1),A(j) ,3)/ B(j,2),依此类推。因此,最后会有一个新的数据帧,暗淡(35,000 x 134)。

我已创建此代码(由于大型数据集,遗憾的是数据框在此处无法复制),但有更有效的方法吗?

在我从Fund.data中提取包含单词NNF的每个列后,创建了名为NNF.data的第一个数据帧。

NNF.data <- Fund.data[ , grep("NNF", names(Fund.data))]

示例:

    NNF.2005.07.EUR NNF.2005.08.EUR NNF.2005.09.EUR

1          NA             NA              NA
2          NA             NA              NA
3          NA             NA              NA
4       -18,066        -83,044          -1,684
5          NA             NA              NA
6      1,384,196       1,011,219       3,266,810
7          NA             NA              NA
8          NA             NA              NA
9          NA             NA              NA
10      99,092         1,478,996       1,118,067
11    -6,961,028       1,252,678       2,086,868
12    -2,921,427    -285,339,229     289,599,959

类似于名为AUM.data的数据框

AUM.data <- Fund.data[ , grep("AUM", names(Fund.data))] 

保留尺寸

columns <- dim(AUM.data)[2] # 135
rows <- dim(AUM.data)[1] # 35,000

growth_columns <- columns - 1 # Reduce the size of the columns by 1
Growth.data <- data.frame(matrix(ncol = growth_columns, nrow = rows))
# Growth.data dim = 35,000 134
ii <- 1
for(i in 1:growth_columns){
  ii <- ii+1
  Growth.data[ ,i] <- NNF.data[,ii]/AUM.data[,i]
}

作为回报,我收到警告

In Ops.factor(NNF.data[, k], AUM.data[, i]) : ‘/’ not meaningful for factors

有更有效的方法吗?

0 个答案:

没有答案
相关问题