Найти значение переменной 30 дней в будущем - PullRequest
1 голос
/ 22 февраля 2020

Привет ниже, мой r датафрейм. Это выдержка из данных S & P500 за последние 10 лет или около того. Как вы можете видеть, я создал столбец с именем Дата 30, который является датой + 30 дней. Я хочу добавить новый столбец (используя dplyr, если я могу) с именем Close30, который является значением «Закрыть» на дату «Date30» - я хочу заглянуть в будущее с данной даты (очевидно, это не будет работать для последние 30 дней ...). Вроде как смещение столбца, но для этого нужна функция фильтра / поиска, потому что данные - рабочие дни, и мне нужно добавить 30 календарных дней - поэтому я не могу сделать постоянное смещение - это должен быть поиск.

Я пробовал несколько вещей, но ничего не получилось ...

Большое спасибо, если вы можете помочь !!?

tidySP500 = na.omit(SP500_Raw) # remove NA in casefuture data have NAs
tidySP500$Date = AsDate(tidySP500$Date)
tidySP500 = tidySP500 %>%
  select("Date", "Open", "High", "Low", "Price") %>% # select and re-order required variables
  rename("Close" = "Price") %>%
  filter(Date >= as.Date("2014-01-05") & Date <= (as.Date("2014-01-05")+100)) %>%
  mutate(Date30 = Date + 30)# %>% #WORKS UP TO HERE
  mutate(Close30 = Close[Date == Date30]) %>% # FAILS
  mutate(Close30 = filter(Close, Date == Date30))  #FAILS

    Date        Open    High    Low     Close   Date30
1   2014-04-15  1831.45 1844.02 1816.29 1842.98 2014-05-15
2   2014-04-14  1818.18 1834.19 1815.80 1830.61 2014-05-14
3   2014-04-11  1830.65 1835.07 1814.36 1815.69 2014-05-11
4   2014-04-10  1872.28 1872.53 1830.87 1833.08 2014-05-10
5   2014-04-09  1852.64 1872.43 1852.38 1872.18 2014-05-09
6   2014-04-08  1845.48 1854.95 1837.49 1851.96 2014-05-08
7   2014-04-07  1863.92 1864.04 1841.48 1845.04 2014-05-07
8   2014-04-04  1890.25 1897.28 1863.26 1865.09 2014-05-04
9   2014-04-03  1891.43 1893.80 1882.65 1888.77 2014-05-03
10  2014-04-02  1886.61 1893.17 1883.79 1890.90 2014-05-02
11  2014-04-01  1873.96 1885.84 1873.96 1885.52 2014-05-01
12  2014-03-31  1859.16 1875.18 1859.16 1872.34 2014-04-30
13  2014-03-28  1850.07 1866.63 1850.07 1857.62 2014-04-27
14  2014-03-27  1852.11 1855.55 1842.11 1849.04 2014-04-26
15  2014-03-26  1867.09 1875.92 1852.56 1852.56 2014-04-25
16  2014-03-25  1859.48 1871.87 1855.96 1865.62 2014-04-24
17  2014-03-24  1867.67 1873.34 1849.69 1857.44 2014-04-23
18  2014-03-21  1874.53 1883.97 1863.46 1866.52 2014-04-20
19  2014-03-20  1860.09 1873.49 1854.63 1872.01 2014-04-19
20  2014-03-19  1872.25 1874.14 1850.35 1860.77 2014-04-18
21  2014-03-18  1858.92 1873.76 1858.92 1872.25 2014-04-17
22  2014-03-17  1842.81 1862.30 1842.81 1858.83 2014-04-16
23  2014-03-14  1845.07 1852.44 1839.57 1841.13 2014-04-13
24  2014-03-13  1869.06 1874.40 1841.86 1846.34 2014-04-12
25  2014-03-12  1866.15 1868.38 1854.38 1868.20 2014-04-11
26  2014-03-11  1878.26 1882.35 1863.88 1867.63 2014-04-10
27  2014-03-10  1877.86 1877.87 1867.04 1877.17 2014-04-09
28  2014-03-07  1878.52 1883.57 1870.56 1878.04 2014-04-06
29  2014-03-06  1874.18 1881.94 1874.18 1877.03 2014-04-05
30  2014-03-05  1874.05 1876.53 1871.11 1873.81 2014-04-04
31  2014-03-04  1849.23 1876.23 1849.23 1873.91 2014-04-03
32  2014-03-03  1857.68 1857.68 1834.44 1845.73 2014-04-02
33  2014-02-28  1855.12 1867.92 1847.67 1859.45 2014-03-30
34  2014-02-27  1844.90 1854.53 1841.13 1854.29 2014-03-29
35  2014-02-26  1845.79 1852.65 1840.66 1845.16 2014-03-28
36  2014-02-25  1847.66 1852.91 1840.19 1845.12 2014-03-27
37  2014-02-24  1836.78 1858.71 1836.78 1847.61 2014-03-26
38  2014-02-21  1841.07 1846.13 1835.60 1836.25 2014-03-23
39  2014-02-20  1829.24 1842.79 1824.58 1839.78 2014-03-22
40  2014-02-19  1838.90 1847.50 1826.99 1828.75 2014-03-21
41  2014-02-18  1839.03 1842.87 1835.01 1840.76 2014-03-20
42  2014-02-14  1828.46 1841.65 1825.59 1838.63 2014-03-16
43  2014-02-13  1814.82 1830.25 1809.22 1829.83 2014-03-15
44  2014-02-12  1820.12 1826.55 1815.97 1819.26 2014-03-14
45  2014-02-11  1800.45 1823.54 1800.41 1819.75 2014-03-13
46  2014-02-10  1796.20 1799.94 1791.83 1799.84 2014-03-12
47  2014-02-07  1776.01 1798.03 1776.01 1797.02 2014-03-09
48  2014-02-06  1752.99 1774.06 1752.99 1773.43 2014-03-08
49  2014-02-05  1753.38 1755.79 1737.92 1751.64 2014-03-07
50  2014-02-04  1743.82 1758.73 1743.82 1755.20 2014-03-06
51  2014-02-03  1782.68 1784.83 1739.66 1741.89 2014-03-05
52  2014-01-31  1790.88 1793.88 1772.26 1782.59 2014-03-02
53  2014-01-30  1777.17 1798.77 1777.17 1794.19 2014-03-01
54  2014-01-29  1790.15 1790.15 1770.45 1774.20 2014-02-28
55  2014-01-28  1783.00 1793.87 1779.49 1792.50 2014-02-27
56  2014-01-27  1791.03 1795.98 1772.88 1781.56 2014-02-26
57  2014-01-24  1826.96 1826.96 1790.29 1790.29 2014-02-23
58  2014-01-23  1842.29 1842.29 1820.06 1828.46 2014-02-22
59  2014-01-22  1844.71 1846.87 1840.88 1844.86 2014-02-21
60  2014-01-21  1841.05 1849.31 1832.38 1843.80 2014-02-20
61  2014-01-17  1844.23 1846.04 1835.23 1838.70 2014-02-16
62  2014-01-16  1847.99 1847.99 1840.30 1845.89 2014-02-15
63  2014-01-15  1840.52 1850.84 1840.52 1848.38 2014-02-14
64  2014-01-14  1821.36 1839.26 1821.36 1838.88 2014-02-13
65  2014-01-13  1841.26 1843.45 1815.52 1819.20 2014-02-12
66  2014-01-10  1840.06 1843.15 1832.43 1842.37 2014-02-09
67  2014-01-09  1839.00 1843.23 1830.38 1838.13 2014-02-08
68  2014-01-08  1837.90 1840.02 1831.40 1837.49 2014-02-07
69  2014-01-07  1828.71 1840.10 1828.71 1837.88 2014-02-06
70  2014-01-06  1832.31 1837.16 1823.73 1826.77 2014-02-05

1 Ответ

0 голосов
/ 22 февраля 2020

Как-то так?

library(tidyverse)

  tidySP500 %>% left_join(select(tidySP500, Close, Date30 = Date), by = c('Date30'))
#> # A tibble: 70 x 7
#>    Date        Open  High   Low Close.x Date30     Close.y
#>    <date>     <dbl> <dbl> <dbl>   <dbl> <date>       <dbl>
#>  1 2014-04-15 1831. 1844. 1816.   1843. 2014-05-15      NA
#>  2 2014-04-14 1818. 1834. 1816.   1831. 2014-05-14      NA
#>  3 2014-04-11 1831. 1835. 1814.   1816. 2014-05-11      NA
#>  4 2014-04-10 1872. 1873. 1831.   1833. 2014-05-10      NA
#>  5 2014-04-09 1853. 1872. 1852.   1872. 2014-05-09      NA
#>  6 2014-04-08 1845. 1855. 1837.   1852. 2014-05-08      NA
#>  7 2014-04-07 1864. 1864. 1841.   1845. 2014-05-07      NA
#>  8 2014-04-04 1890. 1897. 1863.   1865. 2014-05-04      NA
#>  9 2014-04-03 1891. 1894. 1883.   1889. 2014-05-03      NA
#> 10 2014-04-02 1887. 1893. 1884.   1891. 2014-05-02      NA
#> # … with 60 more rows

Создано в 2020-02-22 с помощью пакета представитель (v0.3.0)

ДАННЫЕ

tidySP500 <- read.so::read_so('Date        Open    High    Low     Close   Date30
1   2014-04-15  1831.45 1844.02 1816.29 1842.98 2014-05-15
2   2014-04-14  1818.18 1834.19 1815.80 1830.61 2014-05-14
3   2014-04-11  1830.65 1835.07 1814.36 1815.69 2014-05-11
4   2014-04-10  1872.28 1872.53 1830.87 1833.08 2014-05-10
5   2014-04-09  1852.64 1872.43 1852.38 1872.18 2014-05-09
6   2014-04-08  1845.48 1854.95 1837.49 1851.96 2014-05-08
7   2014-04-07  1863.92 1864.04 1841.48 1845.04 2014-05-07
8   2014-04-04  1890.25 1897.28 1863.26 1865.09 2014-05-04
9   2014-04-03  1891.43 1893.80 1882.65 1888.77 2014-05-03
10  2014-04-02  1886.61 1893.17 1883.79 1890.90 2014-05-02
11  2014-04-01  1873.96 1885.84 1873.96 1885.52 2014-05-01
12  2014-03-31  1859.16 1875.18 1859.16 1872.34 2014-04-30
13  2014-03-28  1850.07 1866.63 1850.07 1857.62 2014-04-27
14  2014-03-27  1852.11 1855.55 1842.11 1849.04 2014-04-26
15  2014-03-26  1867.09 1875.92 1852.56 1852.56 2014-04-25
16  2014-03-25  1859.48 1871.87 1855.96 1865.62 2014-04-24
17  2014-03-24  1867.67 1873.34 1849.69 1857.44 2014-04-23
18  2014-03-21  1874.53 1883.97 1863.46 1866.52 2014-04-20
19  2014-03-20  1860.09 1873.49 1854.63 1872.01 2014-04-19
20  2014-03-19  1872.25 1874.14 1850.35 1860.77 2014-04-18
21  2014-03-18  1858.92 1873.76 1858.92 1872.25 2014-04-17
22  2014-03-17  1842.81 1862.30 1842.81 1858.83 2014-04-16
23  2014-03-14  1845.07 1852.44 1839.57 1841.13 2014-04-13
24  2014-03-13  1869.06 1874.40 1841.86 1846.34 2014-04-12
25  2014-03-12  1866.15 1868.38 1854.38 1868.20 2014-04-11
26  2014-03-11  1878.26 1882.35 1863.88 1867.63 2014-04-10
27  2014-03-10  1877.86 1877.87 1867.04 1877.17 2014-04-09
28  2014-03-07  1878.52 1883.57 1870.56 1878.04 2014-04-06
29  2014-03-06  1874.18 1881.94 1874.18 1877.03 2014-04-05
30  2014-03-05  1874.05 1876.53 1871.11 1873.81 2014-04-04
31  2014-03-04  1849.23 1876.23 1849.23 1873.91 2014-04-03
32  2014-03-03  1857.68 1857.68 1834.44 1845.73 2014-04-02
33  2014-02-28  1855.12 1867.92 1847.67 1859.45 2014-03-30
34  2014-02-27  1844.90 1854.53 1841.13 1854.29 2014-03-29
35  2014-02-26  1845.79 1852.65 1840.66 1845.16 2014-03-28
36  2014-02-25  1847.66 1852.91 1840.19 1845.12 2014-03-27
37  2014-02-24  1836.78 1858.71 1836.78 1847.61 2014-03-26
38  2014-02-21  1841.07 1846.13 1835.60 1836.25 2014-03-23
39  2014-02-20  1829.24 1842.79 1824.58 1839.78 2014-03-22
40  2014-02-19  1838.90 1847.50 1826.99 1828.75 2014-03-21
41  2014-02-18  1839.03 1842.87 1835.01 1840.76 2014-03-20
42  2014-02-14  1828.46 1841.65 1825.59 1838.63 2014-03-16
43  2014-02-13  1814.82 1830.25 1809.22 1829.83 2014-03-15
44  2014-02-12  1820.12 1826.55 1815.97 1819.26 2014-03-14
45  2014-02-11  1800.45 1823.54 1800.41 1819.75 2014-03-13
46  2014-02-10  1796.20 1799.94 1791.83 1799.84 2014-03-12
47  2014-02-07  1776.01 1798.03 1776.01 1797.02 2014-03-09
48  2014-02-06  1752.99 1774.06 1752.99 1773.43 2014-03-08
49  2014-02-05  1753.38 1755.79 1737.92 1751.64 2014-03-07
50  2014-02-04  1743.82 1758.73 1743.82 1755.20 2014-03-06
51  2014-02-03  1782.68 1784.83 1739.66 1741.89 2014-03-05
52  2014-01-31  1790.88 1793.88 1772.26 1782.59 2014-03-02
53  2014-01-30  1777.17 1798.77 1777.17 1794.19 2014-03-01
54  2014-01-29  1790.15 1790.15 1770.45 1774.20 2014-02-28
55  2014-01-28  1783.00 1793.87 1779.49 1792.50 2014-02-27
56  2014-01-27  1791.03 1795.98 1772.88 1781.56 2014-02-26
57  2014-01-24  1826.96 1826.96 1790.29 1790.29 2014-02-23
58  2014-01-23  1842.29 1842.29 1820.06 1828.46 2014-02-22
59  2014-01-22  1844.71 1846.87 1840.88 1844.86 2014-02-21
60  2014-01-21  1841.05 1849.31 1832.38 1843.80 2014-02-20
61  2014-01-17  1844.23 1846.04 1835.23 1838.70 2014-02-16
62  2014-01-16  1847.99 1847.99 1840.30 1845.89 2014-02-15
63  2014-01-15  1840.52 1850.84 1840.52 1848.38 2014-02-14
64  2014-01-14  1821.36 1839.26 1821.36 1838.88 2014-02-13
65  2014-01-13  1841.26 1843.45 1815.52 1819.20 2014-02-12
66  2014-01-10  1840.06 1843.15 1832.43 1842.37 2014-02-09
67  2014-01-09  1839.00 1843.23 1830.38 1838.13 2014-02-08
68  2014-01-08  1837.90 1840.02 1831.40 1837.49 2014-02-07
69  2014-01-07  1828.71 1840.10 1828.71 1837.88 2014-02-06
70  2014-01-06  1832.31 1837.16 1823.73 1826.77 2014-02-05')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...