【发布时间】:2018-04-07 10:38:11
【问题描述】:
我有两个数据框;一个包含一年的每小时温度,另一个包含航班信息。波纹管显示了温度数据帧的摘录:
Time <- c("2000-01-01 00:53:00","2000-01-01 06:53:00","2000-01-01 10:53:00")
Time <- as.POSIXct(Time)
Temp <- c(20,30,10)
Temperature <- data.frame(Time,Temp)
Temperature
Time Temp
1 2000-01-01 00:53:00 20
2 2000-01-01 06:53:00 30
3 2000-01-01 10:53:00 10
下面显示了航班信息数据框的摘录:
DepartureTime <- c("2000-01-01 03:01:00","2000-01-01 10:00:00","2000-01-01 14:00:00")
DepartureTime <- as.POSIXct(DepartureTime)
FlightInformation <- data.frame(DepartureTime)
FlightInformation
DepartureTime
1 2000-01-01 03:01:00
2 2000-01-01 10:14:00
3 2000-01-01 14:55:00
我的目标是获取 FlightInformation$DepartureTime 的每一行并在整个温度 $Time 列中找到最接近的时间。然后我想将相应的温度添加到 FlightInformation 数据框中。所需的输出应如下所示:
FlightInformation
DepartureTime Temp
1 2000-01-01 03:01:00 20
2 2000-01-01 10:14:00 10
3 2000-01-01 14:55:00 10
到目前为止,我的尝试是这样的:
i <- 1
j <- 1
while(i <= nrow(Temperature)){
while(j <= nrow(FlightInformation)){
if(Temperature$Time[i] == FlightInformation$Time[j]){
FlightInformation$Temp[j] == Temperature$Temp[i]
}
j <- j + 1
}
i <- i + 1
}
这涉及首先将所有时间四舍五入到最接近的小时。这种方法并不像我希望的那样准确,而且似乎非常低效!有没有一种简单的方法可以找到最近的 posix 来提供我想要的输出?
【问题讨论】:
-
这隐含地需要构造一个距离矩阵。它将与
N*(N-1)/2一样大。 -
@42- 听起来随着数据集大小的增加,开销会严重超过准确性的提升?
-
在图书馆生存期附近签出功能。
标签: r