微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据 is.na 条件删除 R 中的多行

如何解决根据 is.na 条件删除 R 中的多行

我对 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)))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。