【发布时间】:2015-05-19 23:12:16
【问题描述】:
我是 R 新手,所以这很可能是一个简单的问题,但它给我带来了很多困难。
我试图在跨数据帧找到的两个值之间进行子集化,但在尝试在这两个值之间进行子集化时遇到了困难。我将首先描述我做了什么,什么是有效的,然后什么是无效的。
我有两个数据框。一个具有一系列风暴数据,包括风暴事件的日期,另一个具有与数千个监测事件的排放量相对应的一系列数据。我正在尝试查看是否有任何排放数据在风暴事件开始和结束日期/时间内对应。
到目前为止我所做的如下:
放电数据示例:
X. DateTime Depth DateTime1 newcol
1 3 8/2/2013 13:15 0.038 2013-08-02 13:15:00 1375463700
2 4 8/2/2013 13:30 0.038 2013-08-02 13:30:00 1375464600
3 5 8/2/2013 13:45 0.039 2013-08-02 13:45:00 1375465500
4 6 8/2/2013 14:00 0.039 2013-08-02 14:00:00 1375466400
风暴数据示例:
Storm newStart newEnd
1 1 1382125500 1382130000
2 2 1385768100 1385794200
#Make a value to which the csv files are attached
CA_Storms <- read.csv(file = "CA_Storms.csv", header = TRUE, stringsAsFactors = FALSE)
CA_adj <- read.csv(file = "CA_Adj.csv", header = TRUE, stringsAsFactors = FALSE)
#strptime function (do this for all data sets)
CA_adj$DateTime1 <- strptime(CA_adj$DateTime, format = "%m/%d/%Y %H:%M")
CA_Storms$Start.time1 <- strptime(CA_Storms$Start.time, format = "%m/%d/%Y %H:%M")
CA_Storms$End.time1 <- strptime(CA_Storms$End.time, format = "%m/%d/%Y %H:%M")
#Make dates and times continuous
CA_adj$newcol <- as.numeric(CA_adj$DateTime1)
CA_Storms$newStart <- as.numeric(CA_Storms$Start.time1)
CA_Storms$newEnd <- as.numeric(CA_Storms$End.time1)
这让我可以成功地完成以下子集:
CA_adj[CA_adj$newcol == "1375463700", ]
Example output:
X. DateTime Depth DateTime1 newcol
1 3 8/2/2013 13:15 0.038 2013-08-02 13:15:00 1375463700
CA_adj[CA_adj$newcol == CA_Storms[1,19], ]
X. DateTime Depth DateTime1 newcol
7403 7408 10/18/2013 15:45 0.058 2013-10-18 15:45:00 1382125500
CA_adj[CA_adj$newcol <= CA_Storms[1,20], ]
但是,每当我尝试让它在两个值之间移动时,例如:
CA_adj[CA_adj$newcol >= CA_Storms[1,19] & CA_adj$newol <= CA_Storms[1,20], ]
它会这样回应:
[1] X. DateTime Depth DateTime1 newcol
<0 rows> (or 0-length row.names)
我知道这个输出是不正确的,因为通过粗略查看我的大型数据集,至少有一个值符合这些标准。
什么给了?
【问题讨论】:
-
请发布示例数据和所需的输出。
-
不是
CA_adj[CA_adj$newcol >= CA_Storms[1,19] | CA_adj$newol <= CA_Storms[1,20], ]你想要的吗? -
@Soheil 谢谢你的建议。我已经编辑了帖子,所以现在添加了这些内容。
-
@Robert 我已经尝试过了,它产生了相同的结果。另外,我想我希望它是&,是的,因为我正在寻找在这两个值之间的日期/时间存在哪些放电期并且不排除在它们之外?
-
CA_adj[CA_adj$newcol == CA_Storms[1,19], ]你得到了什么?第 1 行和第 19 列?
标签: r datetime dataframe subset