R中的聚合仅保留单个值

时间:2014-10-28 16:47:10

标签: r

我有一个我想要聚合的数据框,删除我想用来聚合的列中没有NA(或选择唯一行)的行

即在下面我可能想要删除数据框中每周有NA的每一行,并保持其他行不被修改:

  OTHER_REV        month quarter year       week       date       days daysinmonth
1          2785013     1 2009 Q1 2009 2009-01-05 2009-01-05 2009-01-05          31
2          2785013     1 2009 Q1 2009 2009-01-12 2009-01-05 2009-01-05          31
3          2785013     1 2009 Q1 2009 2009-01-19 2009-01-05 2009-01-05          31
4          2785013     1 2009 Q1 2009 2009-01-26 2009-01-05 2009-01-05          31
5          2785013     1  NA QNA 2009       <NA> 2009-01-16 2009-01-16          31
6          2785013     1  NA QNA 2009       <NA> 2009-01-17 2009-01-17          31

产:

  OTHER_REV        month quarter year       week       date       days daysinmonth
1          2785013     1 2009 Q1 2009 2009-01-05 2009-01-05 2009-01-05          31
2          2785013     1 2009 Q1 2009 2009-01-12 2009-01-05 2009-01-05          31
3          2785013     1 2009 Q1 2009 2009-01-19 2009-01-05 2009-01-05          31
4          2785013     1 2009 Q1 2009 2009-01-26 2009-01-05 2009-01-05          31

我尝试过使用grep和unique(数据$ stuff)的组合,并使用聚合,但这些方法似乎都不起作用。

以下是数据的str:

'data.frame':   1896 obs. of  34 variables:
 $ OTHER_REV      : num  2785013 2785013 2785013 2785013 2785013 ...
 $ month                 : num  1 1 1 1 1 1 1 1 1 1 ...
 $ quarter               :Class 'yearqtr'  num [1:1896] 2009 2009 2009 2009 NA ...
 $ year                  : num  2009 2009 2009 2009 2009 ...
 $ week                  : Date, format: "2009-01-05" "2009-01-12" "2009-01-19" "2009-01-26" ...
 $ date                  : Date, format: "2009-01-05" "2009-01-05" "2009-01-05" "2009-01-05" ...
 $ days                  : Date, format: "2009-01-05" "2009-01-05" "2009-01-05" "2009-01-05" ...
 $ daysinmonth           : int  31 31 31 31 31 31 31 31 31 31 ...

在df $ week上调用唯一产生:

[1] "2009-01-05" "2009-01-12" "2009-01-19" "2009-01-26" NA           "2009-02-02"......

1 个答案:

答案 0 :(得分:6)

试试这个:

data[ ! is.na(data$week), ]

使用data.table的类似答案有点简单:

data[ ! is.na(week) ]