Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R程序设计带日期列的过滤数据框_R - Fatal编程技术网

R程序设计带日期列的过滤数据框

R程序设计带日期列的过滤数据框,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 到目前为

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

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"))
chunk=subset(纳斯达克,纳斯达克$Date>=as.Date(“2013-08-05”)&纳斯达克$Date=as.Date(“2013-08-05”)&纳斯达克$Date=as.Date(“2013-08-05”)和:
“>=”的不兼容方法(“运行系数”、“运行日期”)
2:在“[.data.frame”(纳斯达克,纳斯达克$Date>=截止日期(“2013-08-05”)和:

“的不兼容方法(“运行系数”、“运行日期”)应该适合您

library(dplyr)
library(lubridate)

# dummmy data
test_data <- data.frame(
  Date = ymd(c("2013-08-05","2013-08-06 ","2013-08-07")),
  Close.Price = c(3692.95,3665.77,3654.01)
)

test_data %>%
  filter(Date >= ymd("2013-08-05") & Date <= ymd("2013-08-07"))

        Date Close.Price
1 2013-08-05     3692.95
2 2013-08-06     3665.77
3 2013-08-07     3654.01
库(dplyr)
图书馆(lubridate)
#愚蠢的数据
测试数据%

filter(Date>=ymd(“2013-08-05”)&Date您需要在
as.Date()函数中指定日期字符串的格式,然后才能在subset函数中使用它

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

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

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

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

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

您已经通过不执行
read.csv(“nasdaq.csv”,stringsAsFactors=F)
读取了日期作为一个因子。这是步骤1。
library(dplyr)
library(lubridate)

# dummmy data
test_data <- data.frame(
  Date = ymd(c("2013-08-05","2013-08-06 ","2013-08-07")),
  Close.Price = c(3692.95,3665.77,3654.01)
)

test_data %>%
  filter(Date >= ymd("2013-08-05") & Date <= ymd("2013-08-07"))

        Date Close.Price
1 2013-08-05     3692.95
2 2013-08-06     3665.77
3 2013-08-07     3654.01
nasdaq$Date <- as.Date(nasdaq$Date, format = "%Y-%m-%d")
chunk <- subset(nasdaq,nasdaq$Date >= "2013-08-05" & nasdaq$Date <= "2018-08-03")
nasdaq$Date <- as.Date(nasdaq$Date, "%Y-%m-%d")
nasdaq <- read.csv("nasdaq.csv", header = TRUE, colClasses = c("Date", "numeric"))