удалить строку по подмножеству - PullRequest
0 голосов
/ 13 декабря 2011

У меня есть data.frame с 2 столбцами даты = даты наблюдений для каждой станции и значения = данные наблюдений

> head(dataset.a)

     dates      values
1 1976-01-01       7.5
2 1976-01-02        NA
3 1976-01-03        NA
4 1976-01-04        NA
5 1976-01-05        NA
6 1976-01-06      10.2
(...)

Я должен умножить каждую строку на значение, которое у меня уже есть, из других данных.frame:

> head(dataset.b)

     dates      values
1 1976-01-01      0.23
2 1976-01-02        NA
3 1976-01-03        NA
4 1976-01-04        NA
5 1976-01-05        NA
6 1976-01-06      1.23
(...)

Оба набора данных содержат григорианский календарь, однако набор данных.a содержит високосные годы (добавляет 29-й день к февралю), а в dataset.b всегда 28 дней.Я хочу игнорировать все 29-е число февраля в dataset.a и выполнить умножение.

Я должен иметь возможность создать базовое подмножество, используя оба индекса:

which(strftime(dataset.a[,1],"%d")!="29")
which(strftime(dataset.a[,1],"%m")!="02")

Однако, как только я добавлюлогическое И я теряю позицию в data.frame, где у меня был ГОД-02-29, и он возвращает мне число строк, ИСТИНА для комбинации обоих индексов.

Полагаю, это очень простой вопрос, но я потерялся.

1 Ответ

1 голос
/ 13 декабря 2011

Попробуйте логический индекс:

idx <- strftime(ws.hb1.dataset[d,1],"%d")!="29" & strftime(ws.hb1.dataset[d,1],"%m")!="02"

Примечание: я предполагаю, что ws.hb1.dataset[d,1] в основном dataset.a[,1] здесь?

Тогда вы получите вектор TRUE TRUE ... TRUE FALSE TRUE TRUE ..с FALSE, совпадающим с 29 февраля.

Тогда вы можете просто набрать dataset.a[idx,], чтобы получить даты не 29 / февраля.

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