过滤dplyr中的列表

时间:2015-12-07 16:18:52

标签: r dataframe dplyr

我有一个如下所示的开源数据集:

 > head(df)
# V1       V2 V3  V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14   V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25

#1 240 20110101  1 260 50 50 70 50 NA  42   0   0   0   0 10217  56   8  95  20   7   1   0   0   0   0
#2 240 20110101  2 280 60 60 80 51 NA  42   0   0   0   0 10215  58   8  94  10   7   0   0   0   0   0
#3 240 20110101  3 280 60 60 80 51 NA  37   0   0   0   0 10211  60   8  91  2    7   0   0   0   0   0
#4 240 20110101  4 270 60 50 80 47 NA  37   0   0   0   0 10207  58   8  93  10   7   0   0   0   0   0
#5 240 20110101  5 260 50 50 70 53 NA  41   0   0   0   0 10202  61   8  92  NA   5   0   0   0   0   0
#6 240 20110101  6 270 50 50 70 51 34  39   0   0   0   0 10199  58   8  92  10   7   0   0   0   0   0

第二列包含数据。因为我只对特定数据的天气结果感兴趣,所以我首先希望它只过滤我需要的日期。

我有另一个包含日期的df:

> head(data,2)
  DATUM     TIJD
1 25-7-2014 18:30:00
2 26-7-2014 16:00:00

我现在从第二个df获取唯一日期:

dates <- unique(data$DATUM)

并创建一个列表 - &gt;

dates <- as.list(dates)

现在我尝试使用dplyr

过滤元素
library(dplyr)
data_new <- filter(df, V2 %in% dates)

但这并没有给我任何记录。我认为在创造&#34;日期&#34;时出现了问题。变量

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您希望不使用列表,而是使用数据框。

我正在复制宣布dplyr update的博文:

<强>列表变量

数据框通常由一系列具有相同长度的原子矢量组成。但是,也可以使用一个列表变量,我称之为列表变量。由于data.frame()的复杂强制规则,创建包含列表列的数据框的最简单方法是使用 data_frame()

data_frame(x = 1, y = list(1), z = list(list(1:5, "a", "b")))
> Source: local data frame [1 x 3]
> 
>   x        y         z
> 1 1 <dbl[1]> <list[3]>

http://blog.rstudio.org/2015/01/09/dplyr-0-4-0/

答案 1 :(得分:1)

使用半连接怎么样?

df %>%
  rename(DATUM = V2) %>%
  semi_join(data)