R编程用日期列过滤数据框

标签 r

对于这样的数据框,我试图选择特定日期范围内的一些行:

nasdaq=read.csv("nasdaq.csv")
head(nasdaq)

        Date Close.Price
1 2013-08-05     3692.95
2 2013-08-06     3665.77
3 2013-08-07     3654.01
4 2013-08-08     3669.12
5 2013-08-09     3660.11
6 2013-08-12     3669.95

到目前为止我尝试过的是:

chunk=subset(nasdaq,nasdaq$Date>=as.Date("2013-08-05") & nasdaq$Date<=as.Date("2018-08-03"))

警告消息:

1: In eval(e, x, parent.frame()) :
  Incompatible methods ("Ops.factor", "Ops.Date") for ">="
2: In eval(e, x, parent.frame()) :
  Incompatible methods ("Ops.factor", "Ops.Date") for "<="

我也尝试过...

 chunk=nasdaq[nasdaq$Date>=as.Date("2013-08-05") & nasdaq$Date<=as.Date("2018-08-03"),]

警告消息:

1: In `[.data.frame`(nasdaq, nasdaq$Date >= as.Date("2013-08-05") &  :
  Incompatible methods ("Ops.factor", "Ops.Date") for ">="
2: In `[.data.frame`(nasdaq, nasdaq$Date >= as.Date("2013-08-05") &  :
  Incompatible methods ("Ops.factor", "Ops.Date") for "<="

我在没有 as.Date 函数的情况下尝试了上述两种方法,但不起作用,请告诉我哪里可能出错?

最佳答案

警告消息告诉您问题所在。数据框中的Date 列是一个因素,而不是日期。这是因为您没有在 read.csv 中指定 stringsAsFactors = FALSE(那么 Date 将是一个字符)。

有多种方法可以解决此问题。读取数据后可以转换为日期:

nasdaq$Date <- as.Date(nasdaq$Date, "%Y-%m-%d")

或者您可以在读取文件时使用 colClasses 参数:

nasdaq <- read.csv("nasdaq.csv", header = TRUE, colClasses = c("Date", "numeric"))

或者您可以使用 readr::read_csv,它将识别该列包含日期。

关于R编程用日期列过滤数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867390/

相关文章:

r - 使用 read_excel(na = ) 如何指定多个 NA 字符串?

替换列表中的值

R 字节向量到 ieee 754 float

r - 如何衡量部署 Shiny 应用程序的所有方式的可扩展性?

mysql - R, Shiny ,应用程序之前的弹出窗口

r - 如何使用 R 中的 igraph 根据长度选择图的某些路径

r - 在多列上使用 tidyr 的 pivot_wider 的问题

r - Julia 中有类似 R 的子集函数吗?

r - 在数据框中找到某个值

r - 从数据框中的标签获取列索引