2011-04-03 60 views
2

我有一個csv文件,其中有2列用逗號分隔 - 第一個是日期,後面跟着什麼是數字數據。R-project動物園對象:如何刪除行數據是非數字的行

我通過read.csv函數將數據加載到R中,該函數將數據存儲在具有2列的data.frame對象中。我執行一些操作來將對象轉換爲索引設置爲日期的動物園對象。所以現在對象有一列,它被假設爲數字數據和日期索引。

問題是數據中有字符串「ND」隨機分散。我只想提取那些不包含「ND」的動物園對象的那些行。

yr2是關注的動物園對象。

例子:

03/15/2011 0.63 
03/16/2011 0.58 
03/17/2011 0.60 
03/18/2011 0.61 
03/21/2011 0.67 
03/22/2011 ND 
03/23/2011 0.69 
03/24/2011 0.72 
03/25/2011 0.79 
03/28/2011 0.81 
03/29/2011 0.81 
03/30/2011 0.80 
03/31/2011 0.80 

我曾嘗試以下:

> yr2[!="ND"] 
Error: unexpected '!=' in "yr2[!=" 
> yr2[yr2[!="ND"]] 
Error: unexpected '!=' in "yr2[yr2[!=" 
> 
> yr2[!is.character(yr2)] 
Data: 
character(0) 

Index: 
Data: 
named character(0) 

Index: 
integer(0) 

我將不勝感激一些指導。謝謝。

回答

2

在將其轉換爲zoo對象之前解決違規的「ND」數據有意義嗎? ND是否代表「無數據」,即應解釋爲NA?

txt <- "03/15/2011 0.63 
03/16/2011 0.58 
03/17/2011 0.60 
03/18/2011 0.61 
03/21/2011 0.67 
03/22/2011 ND 
03/23/2011 0.69 
03/24/2011 0.72 
03/25/2011 0.79 
03/28/2011 0.81 
03/29/2011 0.81 
03/30/2011 0.80 
03/31/2011 0.80" 

#If ND == NA 
dat <- read.table(textConnection(txt), header = FALSE, na.strings = "ND") 

#if not 
dat <- read.table(textConnection(txt), header = FALSE) 

dat[dat$V2 != "ND" ,] 

#or 

subset(dat, V2 != "ND") 
+0

謝謝這個工作。但現在我有另一個問題。我想繪製動物園對象。數據基本上是一個時間序列。會發生什麼是數據被繪製,但x軸不採用索引的日期形式。我花了數小時的時間來處理這個問題,例如創建data.frames,ts對象等......沒有任何東西可以工作。任何指導將不勝感激。謝謝。 – codingknob 2011-04-03 04:10:38

+0

我使用as.Date轉換日期,並且工作正常。現在我只是不能繪製數據。我希望日期位於x軸上,數字數據位於y軸上。我嘗試了plot(dat [,1],dat [,2]),其中日期位於第一列,第二列是數據。當我這樣做時,我的R控制檯掛起。 – codingknob 2011-04-03 04:50:51

0

試試這個:

Lines <- "03/15/2011 0.63 
03/16/2011 0.58 
03/17/2011 0.60 
03/18/2011 0.61 
03/21/2011 0.67 
03/22/2011 ND 
03/23/2011 0.69 
03/24/2011 0.72 
03/25/2011 0.79 
03/28/2011 0.81 
03/29/2011 0.81 
03/30/2011 0.80 
03/31/2011 0.80" 

library(zoo) 

z <- read.zoo(textConnection(Lines), format = "%m/%d/%Y", na.strings = "ND") 
zz <- na.omit(z) 

plot(zz)