Объект зоопарка R-проекта: как удалить строки, где данные не числовые - PullRequest
2 голосов
/ 03 апреля 2011

У меня есть CSV-файл, в котором 2 столбца разделены запятой - первая - это дата, за которой следуют числовые данные.

Я загружаю данные в R с помощью функции read.csv, которая сохраняет данные в объекте 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 ]

2 голосов
/ 03 апреля 2011

Имеет ли смысл обратиться к ошибочным данным "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")
0 голосов
/ 03 апреля 2011

Попробуйте это:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...