2

我有一个 csv 文件,它有 2 列,用逗号分隔 - 第一列是日期,后跟假定为数字数据的内容。

我通过 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)

我将不胜感激一些指导。谢谢你。

4

2 回答 2

2

在将有问题的“ND”数据转换为对象之前解决它是否有意义zoo?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")
于 2011-04-03T02:11:07.683 回答
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)
于 2011-04-03T09:45:14.367 回答