Линейный график в r, игнорирующий пропущенные данные - PullRequest
2 голосов
/ 07 февраля 2011

У меня есть набор данных, где отсутствующие данные представлены как -999.Данные идут от 0 до 1. Я хотел бы представить данные в виде линейного графика, но я не хочу, чтобы действительные числа соединялись с отсутствующими данными.Например, если у меня есть

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')

, но он не выполняет то, что я хочу.

Ответы [ 3 ]

4 голосов
/ 07 февраля 2011

Заменить -999 на NA:

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

Это то, что вы хотите?

2 голосов
/ 07 февраля 2011

Другой способ изменить -999 на NA:

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

Это дает те же результаты, что и хороший ответ @ Джошуа, но может быть понятнее, если вы новичок в R.

0 голосов
/ 07 февраля 2011

Вы не говорите, что он делает и как это не соответствует тому, что вы хотите.

Одна из проблем, с которой вы можете столкнуться, заключается в том, что read.table возвращает фрейм данных, поэтому в вашем коде он пытается построить фрейм данных, а не столбец x внутри фрейма данных. Что происходит, зависит от того, сколько столбцов заканчивается в вашем фрейме данных (что мы не можем угадать из вашего примера).

Если имеется ровно 2 столбца, то создается обычная диаграмма рассеяния (но параметры могут проходить некорректно). Если x1 имеет только один столбец, то создается полосовой график, который сильно отличается от графика рассеяния, создаваемого, когда вы даете один вектор команде plot.default.

Так может быть

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

или что-то подобное - это то, что вы хотите.

Если нет, то покажите нам, как выглядит ваш фрейм данных после:

summary(x1)
str(x1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...