Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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_Interpolation - Fatal编程技术网

R 从数据插值

R 从数据插值,r,interpolation,R,Interpolation,这里有一个快速的问题,我希望它有一个快速的答案 这是我的 是否需要获取外部日期列表(不一定是预先存在的数据点的日期),并获取相应的燃油价格值 谢谢你的帮助 编辑: 以下是我的数据示例: data1 [date] [fuel price] [1,] 01/15/2010 3.56 [2,] 01/17/2010 3.32 [3,] 03/18/2010 3.45 [4,] 04/2

这里有一个快速的问题,我希望它有一个快速的答案

这是我的

是否需要获取外部日期列表(不一定是预先存在的数据点的日期),并获取相应的燃油价格值

谢谢你的帮助

编辑: 以下是我的数据示例:

data1
       [date]    [fuel price] 
[1,]  01/15/2010     3.56           
[2,]  01/17/2010     3.32          
[3,]  03/18/2010     3.45           
[4,]  04/20/2010     3.94        
[4,]  04/25/2010     3.94      
等等


在现有数据的情况下,是否可以询问2010年2月15日的燃油价格?

函数
approxfun
将根据数据创建插值函数,但它需要数字数据作为输入。我假设您的日期可以作为字符串使用,因此我们需要首先使用
as.POSIXct
将字符串转换为日期,然后使用
as.numeric
将日期转换为数字

# Sample data
Data = read.table(text= "date    fuel_price 
01/15/2010     3.56           
01/17/2010     3.32          
03/18/2010     3.45           
04/20/2010     3.94        
04/25/2010     3.94", 
header=TRUE, stringsAsFactors=FALSE)

## Convert date strings to numbers
DateNum = as.numeric(as.POSIXct(Data$date, format="%m/%d/%Y"))

## fit a function to the data 
PriceFun = approxfun(Data$fuel_price ~ DateNum)

## Set up a function that will do the same pre-processing on new input. 
PriceFromDate = function(x) {
    round(PriceFun(as.numeric(as.POSIXct(x, format="%m/%d/%Y"))), 2) }

## Test with your example
PriceFromDate("02/15/2010 ")
[1] 3.38

## Everything is vectorized so you can give it a list of dates
PriceFromDate(c("02/15/2010 ", "02/20/2010"))
[1] 3.38 3.39
要阅读csv,估算价格并写出结果,您需要以下内容

FuelData = read.csv("YourFile.csv", stringsAsFactors=FALSE)  
FuelData$EstPrice = PriceFromDate(FuelData$date)  
write.csv(FuelData, "NewFuelFile.csv")  

我想你的意思是外推,而不是内插,因为你想估计数据范围之外的值。要做到这一点,您必须建立一些回归模型,然后使用该模型进行推断。在R中使用
lm
功能可能是最简单的方法。感谢Gaurav的帮助。但我试图为2008年和2016年的日期提供价格,但不一定是我已经有价值的日期。有什么帮助吗?非常感谢!一个简单的问题是,是否可以通过
PriceFromDate
运行日期列表并将结果导出到csv?是的,将其添加到回答中你太棒了!非常抱歉,最后一个问题。我正在处理大量的日期(>1000000),因此单独输入日期是不可行的。我是否可以获取一个包含日期的现有csv文件,并通过函数运行它们?然后让该函数创建一个新的csv文件?再次抱歉打扰你!没有线饲料丑陋。我会把它放在干净代码的答案中。。。现在回答。