2015-11-19 68 views
-3

我有一个数据框有两列,yearmon和x。 yearmon有多个条目。一些在x列中有相应的信息,而其他的则有NA。如何对R中的条件进行重复数据删除但控制?

例如,如果2001年1月份的某个条目在x列中有数据,我想保留该行但删除2001年1月其他行中含有NA的行。但是,如果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 
+2

你能否提供你的代码/数据样本 – anotherFishGuy

+0

如果你不确定如何做到这一点:阅读[this](http://stackoverflow.com/questions/5963269/how-to-make-a-great- r-reproducible-example) – Heroka

+0

我添加了数据科林谢谢 – user5562441

回答

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