根据 is.na 条件删除 R 中的多行
Deleting multiple rows in R based on a is.na condition
我对 R 并不完全陌生,但我可以在这方面派上用场:)
所以,我有一个关于过去 20 年大约 14,000 只不同股票的数据集。现在,很明显,其中一些股票在整个时间段内都没有交易。我正在尝试清理我的数据,以便对于任何股票,如果在特定月份至少一天没有交易,则该(唯一)股票的整个月数据将被删除。也就是说,我只想保留特定月份每天交易的每只股票的数据。我希望这是清楚的!
如果你至少能指导我使用 packages/functions 来完美地进行过滤,那就太好了。
谢谢!
示例:
mydata <- structure(list(permno = c(10001L, 10001L, 10001L, 10001L, 10001L,
10001L, 10001L, 10001L, 10001L, 10001L), date = structure(c(7306,
7307, 7308, 7309, 7312, 7313, 7314, 7315, 7316, 7319), class = "Date"),
sic = c(4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920,
4920), price = c(3.375, 3.33333333333, NA, 3.35416666667,
3.375, 3.375, 3.375, 3.375, 3.375, NA), cap = c(10347750,
10220000, 10220000, 10283875, 10347750, 10347750, 10347750,
10347750, 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)))
我对 R 并不完全陌生,但我可以在这方面派上用场:)
所以,我有一个关于过去 20 年大约 14,000 只不同股票的数据集。现在,很明显,其中一些股票在整个时间段内都没有交易。我正在尝试清理我的数据,以便对于任何股票,如果在特定月份至少一天没有交易,则该(唯一)股票的整个月数据将被删除。也就是说,我只想保留特定月份每天交易的每只股票的数据。我希望这是清楚的!
如果你至少能指导我使用 packages/functions 来完美地进行过滤,那就太好了。
谢谢!
示例:
mydata <- structure(list(permno = c(10001L, 10001L, 10001L, 10001L, 10001L,
10001L, 10001L, 10001L, 10001L, 10001L), date = structure(c(7306,
7307, 7308, 7309, 7312, 7313, 7314, 7315, 7316, 7319), class = "Date"),
sic = c(4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920, 4920,
4920), price = c(3.375, 3.33333333333, NA, 3.35416666667,
3.375, 3.375, 3.375, 3.375, 3.375, NA), cap = c(10347750,
10220000, 10220000, 10283875, 10347750, 10347750, 10347750,
10347750, 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)))