2016-08-12 34 views
0

我正在試圖弄清楚這樣做的最簡單方法。 我可以有各種數據表的長度,我想用連接數據點的斜率自動填充缺失的值。我只是不確定以編程方式執行此操作的最簡單方法。使用繪圖/數據點的斜率計算給定X的Y值

我想有一些這樣的事情,我可以做,但我不知道如何應用這個,或者如果有一個簡單的循環/ dplyr /其他功能,解決這個問題。

基本上如果有一個線條圖,每個點的位置是哪條線會越過該X /索引值?這就是我想要的。

 lm(y~index)$coef[[2]] * index + lm(y~index)$coef[[1]] 

兩個例子:

 df = data.frame(index = 1:6, y = c(10,NA,20,NA,NA,2) 
     df2 = data.frame(index = 1:8, y=c(NA,NA,2,NA,NA,NA,NA,18) 

    solutions: 
df = data.frame(index = 1:6, y = c(10,15, 20,14,8,2)#slope of 5 and then -6 
df2 = data.frame(index = 1:8, y=c(NA,NA,2,5.2,8.4,11.6,14.8,18) #slope of 3.2 

回答

2

你想用approx與指定多少個數據點,將出現線性內插的說法n一起。正如你所做的那樣,它要求至少有兩個完整的(x,y)對的情況。

data.frame(approx(df, n = nrow(df))) 

    x y 
1 1 10 
2 2 15 
3 3 20 
4 4 14 
5 5 8 
6 6 2 
+1

在df2的情況下,如果你用'n'參數來做'NA'值,也會插入'NA'值。更好的方法是用'which(in.na(df2 $ y))'指定所需的插值點' –

+1

然後,將點保存在'interp.pts'中,將這些值替換爲:'df2 $ y [ interp.pts] < - approx(df2 $ index,df2 $ y,xout = interp.pts)$ y' –

+0

@EdwardCarney提供了一個很好的觀點,但即使指定了哪些點,仍然存在端點插值的問題專門插入。 – shayaa

相關問題