我有一个包含两列的数据框,yearmon和x。 yearmon有多个条目。有些在x列中有相应的信息,有些则有NA。
例如,如果2001年1月的一个条目中的某个数据包含x列中的数据,我想保留该行,但删除其中包含NA的2001年1月的其他行。但是,如果2001年1月的条目都没有x列中的数据,我想保留NA列。我尝试过重复数据删除,独特,合并,聚合并没有运气。
以下是我所要求的数据样本:
Yearmon Price
1 2001-01-01 NA
2 2001-01-01 188000.0
3 2001-02-01 NA
4 2001-02-01 250000.0
5 2001-03-01 NA
6 2001-03-01 250000.0
7 2001-04-01 NA
8 2001-05-01 NA
9 2001-05-01 325000.0
10 2001-06-01 NA
11 2001-06-01 375000.0
12 2001-07-01 NA
13 2001-08-01 NA
14 2001-09-01 NA
15 2001-10-01 NA
16 2001-11-01 NA
17 2001-11-01 305000.0
18 2001-12-01 NA
19 2001-12-01 360000.0
答案 0 :(得分:0)
因为您的数据在每个组的开头都以NAs
排序,所以您应该能够使用行长编码来计算您希望保留的行的索引:
> df[cumsum(rle(as.integer(df$Yearmon))$lengths),]
Yearmon Price
2 2001-01-01 188000
4 2001-02-01 250000
6 2001-03-01 250000
7 2001-04-01 NA
9 2001-05-01 325000
11 2001-06-01 375000
12 2001-07-01 NA
13 2001-08-01 NA
14 2001-09-01 NA
15 2001-10-01 NA
17 2001-11-01 305000
19 2001-12-01 360000
使用by
:
do.call(rbind, by(df, df$Yearmon, tail, 1))