2011-02-07 37 views
2

我有一個數據集,其中缺失的數據表示爲-999。數據從0變爲1. 我想將數據繪製爲線圖,但我不希望有效數字連接到缺失的數據。例如,如果我有在r中忽略缺失數據的線圖

x = c(0.29, 0.3, -999, 0.31, 0.4) 

我想要走行從0.29到0.3,在丟失的數據突破和0.31之間,0.4重新開始。

假設上述數據是在文件x.txt,我試圖做到以下幾點:

x1 = read.table('x.txt', na.strings=c("-999.")) 
plot(x1, type='l') 

但它不會做我想做的。

回答

4

更換-999NA

is.na(x) <- (x == -999) 
plot(x, type="l") 

這是你想要的嗎?

+0

非常感謝你。我試過這個,它可以工作! – SnowFrog 2011-02-08 11:57:11

2

改變-999NA的另一種方法是:

x[x==-999] = NA 
plot(x, type="l") 

這給了相同的結果,@約書亞的不錯的答案,不過如果你是新的R.

+0

好點。我使用`is.na`是因爲``NA`說'功能'is.na < - '可能會提供更安全的方式來設置缺失。例如,它的行爲因素不同。 – 2011-02-07 16:33:54

+1

我肯定會使用你從現在開始的方法 - 但是如果你是R的新手,這有點不透明;) – csgillespie 2011-02-07 16:45:42

0

你沒可能再清楚不過了說出它的作用,以及如何與你想要的不符。

你可能會遇到的一個問題是read.table返回一個數據幀,所以在你的代碼中它試圖繪製數據幀而不是數據幀中的x列。發生什麼取決於你的數據框有多少列(我們無法從你的例子中猜出)。

如果確切有2列,則會創建一個常規散點圖(但選項可能無法正確通過)。如果x1只有一列,則會創建一個條形圖,這與將單個矢量指定給plot.default命令時創建的散點圖完全不同。

所以也許

plot(x1[[1]], type='l') 

或類似的東西是你想要的。

如果沒有,告訴我們您的數據幀的樣子看完後:

summary(x1) 
str(x1)