问题描述
我对 R 并不完全陌生,但我可以在这方面有所作为 :)
所以,我有一个关于过去 20 年来大约 14,000 种不同股票的数据集。现在,很明显,其中一些股票在整个时间段内都没有交易。我正在尝试清理我的数据,以便对于任何股票,如果在特定月份至少有一天没有交易,则该(仅)股票的整个月数据将被删除。也就是说,我只想保留每只股票在特定月份中每天交易的数据。我希望这很清楚!
如果您至少能指导我了解我可以用来漂亮地进行此过滤的包/函数,那就太好了。
谢谢!
示例:
mydata <- structure(list(permno = c(10001L,10001L,10001L),date = structure(c(7306,7307,7308,7309,7312,7313,7314,7315,7316,7319),class = "Date"),sic = c(4920,4920,4920),price = c(3.375,3.33333333333,NA,3.35416666667,3.375,NA),cap = c(10347750,10220000,10283875,10347750,10092250)),row.names = c(NA,10L),class = "data.frame")
mydata
permno 是指特定的股票,对于每只股票,我只想保留没有 n/a 的月份的数据。
解决方法
将年、月和日与 date
分开。对于每个月的每只股票,如果该股票每天都在交易,则只保留数据。
library(dplyr)
library(lubridate)
result <- mydata %>%
mutate(year = year(date),month = month(date),day = day(date)) %>%
group_by(permno,year,month) %>%
filter(all(!is.na(price)))