按子集删除行

时间:2011-12-13 00:13:09

标签: r

我有一个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
(...)

我必须将每行乘以另一个data.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包含 闰年(2月29日增加)和dataset.b在2月份总是28天。我想在dataset.a中忽略2月29日的全部并进行乘法运算。

我应该能够使用两个索引制作一个基本子集:

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

然而,一旦我添加一个逻辑AND我松开了data.frame中的位置,我就有了YEAR-02-29,并且他返回了两个索引组合的TRUE行数。

我想这是一个非常基本的问题,但我迷路了。

1 个答案:

答案 0 :(得分:1)

尝试逻辑索引:

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/2月一致。

然后你可以dataset.a[idx,]来获得非29/2月日期。