簡體   English   中英

重疊數據幀列表 (R)

[英]lapply over list of Data Frames (R)

在我的工作區中,我有一個dfo ,它是一個包含 216 個對象的列表。 每個對象都是一個數據框,顯示前兩個對象:

> head(dfo)
$`1997-01-23`
         Date C/P   K      Vol     Delta       ID
56 1997-01-23   0 400       NA        NA 11690674
10 1997-01-23   0 550       NA        NA 10376194
34 1997-01-23   0 600       NA        NA 11036690
58 1997-01-23   0 650       NA        NA 11544898
27 1997-01-23   0 660       NA        NA 10759732
52 1997-01-23   0 670       NA        NA 11439157
50 1997-01-23   0 680 0.176301  0.995920 11364929
60 1997-01-23   0 690 0.185490  0.990123 11780133
39 1997-01-23   0 700 0.203161  0.972175 11183860
65 1997-01-23   0 710 0.200024  0.955090 11730364
38 1997-01-23   0 720 0.202629  0.923953 10982863
.  .            . .   .         .        .
.  .            . .   .         .        .
.  .            . .   .         .        .
45 1997-01-23   1 785 0.160904 -0.552771 10986679
2  1997-01-23   1 790 0.159603 -0.609276 10333499
23 1997-01-23   1 795 0.156346 -0.666208 10456682
47 1997-01-23   1 800 0.154266 -0.719749 11072475
44 1997-01-23   1 805 0.150034 -0.773075 11165557
63 1997-01-23   1 810 0.151855 -0.812170 11764824
53 1997-01-23   1 815 0.150437 -0.851131 11378977
62 1997-01-23   1 820       NA        NA 11532248
18 1997-01-23   1 825       NA        NA 10428721
41 1997-01-23   1 830       NA        NA 10985583

$`1997-02-20`
          Date C/P   K      Vol     Delta       ID
125 1997-02-20   0 400       NA        NA 11116217
139 1997-02-20   0 450       NA        NA 11285261
157 1997-02-20   0 475       NA        NA 11697618
100 1997-02-20   0 500       NA        NA 10744183
167 1997-02-20   0 525       NA        NA 11659969
162 1997-02-20   0 550       NA        NA 11774819
79  1997-02-20   0 575       NA        NA 10237388
150 1997-02-20   0 600       NA        NA 11441546
118 1997-02-20   0 610       NA        NA 10875377
72  1997-02-20   0 620       NA        NA 10249544
121 1997-02-20   0 625       NA        NA 10924970
85  1997-02-20   0 630       NA        NA 10387622
102 1997-02-20   0 635       NA        NA 10599759
107 1997-02-20   0 640       NA        NA 10770025
124 1997-02-20   0 645       NA        NA 11068359
129 1997-02-20   0 650       NA        NA 10883922
105 1997-02-20   0 660       NA        NA 10485716
123 1997-02-20   0 670       NA        NA 11020541
175 1997-02-20   0 675 0.244968  0.994066 10350962
98  1997-02-20   0 680 0.261206  0.989390 10574981
.   .            . .   .         .        .
.   .            . .   .         .        .
.   .            . .   .         .        .
99  1997-02-20   1 830 0.182276 -0.719366 10719331
163 1997-02-20   1 840 0.178969 -0.797619 11657641
132 1997-02-20   1 850 0.178679 -0.858147 11205448
169 1997-02-20   1 875       NA        NA 11759335
67  1997-02-20   1 900       NA        NA 10001169
90  1997-02-20   1 925       NA        NA 10196550 

我還有一個 216 行和 2 列的數據框index

> head(index)
        Date  Index
1 01/23/1997 776.64
2 02/20/1997 800.35
3 03/20/1997 778.04
4 04/17/1997 760.49
5 05/22/1997 833.86
6 06/19/1997 888.99

對於列表dfo每個數據框,我想將向量dfo$K除以該日期的相應index$Index值。 dfo數據框列表中的 216 個日期和index數據框中的 216 個日期完美對應,但我在dfoindex中都包含了Date列以備冗余。

在這種情況下我將如何實現lapply 我真的不明白如何將 216 個數據框的列表與 216 行的數據框連接起來。

考慮遍歷數據框列表的每個對象並按日期與index數據框合並。 然后在循環中,運行你的計算K / Index ,保持Index與否,然后返回結果。

newdfList <- lapply(dfList, function(df) {                             
                        newdf <- merge(ind, df, by='Date')
                        newdf['K'] <- newdf['K'] / newdf['Index']                            
                        newdf['Index'] <- NULL
                        return(newdf)
                    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM