Пометить список фреймов данных (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
У меня также есть фрейм данных index
из 216 строк и 2 столбцов:
> 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
значение на эту дату. 216 даты в dfo
список фреймов данных и 216 дат в index
данные кадра соответствуют идеально, но я включил Date
столбцы в обоих dfo
а также index
для резервирования.
Как бы я реализовал lapply
в этом случае? Я не очень понимаю, как связать список из 216 фреймов данных с фреймом 216 строк.
1 ответ
Рассмотрим итерацию по каждому объекту списка фреймов данных и объединяем с 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)
})