2015-12-28 2 views
1

В настоящее время я работаю над магистерской диссертацией. В моем наборе данных я ежедневно наблюдаю за 5413 компаниями в течение 15 лет. Мне нужно удалить не торговые дни, т. Е. Праздники на Лондонской фондовой бирже, такие как Рождество, Новый год и т. Д. Я называется «Удаление строк, содержащих конкретные даты в R», но не смог найти решение моей prblem Мой набор данных закрытия цены акций и выглядит следующим образом (имеет тот же формат данных)Удаление строк по дате в R - Финансовые данные

Date   A  B 
31/12/1999 NA  NA 
03/01/2000 NA  NA 
04/01/2000 79.5  325 
05/01/2000 79.5  322.5 
06/01/2000 NA  NA 
07/01/2000 79.5 327.5 

И например, я хочу, чтобы удалить даты 31/12/1999 и 06/01/2000, так что мои данные выглядит

Date  A   B 
03/01/2000 NA  NA 
04/01/2000 79.5 325 
05/01/2000 79.5 322.5 
07/01/2000 79.5 327.5 

Я новичок в R, но это StackOverflow был очень полезным. Я благодарю вас заранее

+1

В пакете timeDate, существует функция holidayNYS E(), что вы можете предоставить годы интереса в качестве вектора, и он вернет вектор праздничных дат за эти годы. Затем вы можете подмножить свои данные, а не% in% filter. Пример использования: library (timeDate); holidayNYSE (c (2013, 2014, 2015)); – Gopala

+0

Спасибо за ваш ответ, но я работаю на Лондонской фондовой бирже, у которой есть несколько разных неторговых дней (праздников) с NYSE. Я запустил код, как вы указали, но ничего для Лондонской фондовой биржи. – Aquarius

+1

Используйте праздникLONDON вместо того же пакета. :) – Gopala

ответ

0

Если предположить, что в столбце Дата вектор символов, вы можете просто изменить ответ предоставленный user3949008 в комментариях, указав в holidayLONDON годы вам нужно:

df$Date <- as.Date(df$Date,"%d/%m/%Y") 
df[!df$Date %in% as.Date(holidayLONDON(1999:2000)), ] 

Выход:

 Date A  B 
1 1999-12-31 NA NA 
3 2000-01-04 79.5 325.0 
4 2000-01-05 79.5 322.5 
5 2000-01-06 NA NA 
6 2000-01-07 79.5 327.5 

данных:

df <- structure(list(Date = c("31/12/1999", "03/01/2000", "04/01/2000", 
"05/01/2000", "06/01/2000", "07/01/2000"), A = c(NA, NA, 79.5, 
79.5, NA, 79.5), B = c(NA, NA, 325, 322.5, NA, 327.5)), .Names = c("Date", 
"A", "B"), class = "data.frame", row.names = c(NA, -6L)) 
+0

Благодарим mpalanco и user3949008. Выяснил правильный код из приведенной выше библиотеки предложений (timeDate) Цена $ Дата <- as.Date (Цена $ Дата, "% Y-% m-% d") Цена <-Цена [! Цена $ Дата% в % as.Date (holidayLONDON (1999: 2014)),] – Aquarius

+0

@Aquarius Рад, что это было полезно. ура – mpalanco

Смежные вопросы