如何通过矢量值过滤或省略数据?

时间:2014-11-30 22:23:25

标签: r

您好Stackoverflow社区。我研究了电价动态,并提出了一个关于过滤或省略大数据框架值的问题。

我的data.frame看起来像这样,最初有15个变量:

 time_stamp price; renw_elec; wday;
 01.01.2014; 12.5;  25,562.25;  3;
 02.01.2014; 14.5;  23,896.56;  4;
 03.01.2014; 17.6;  26,634.87;  5;
 04.01.2014; 12.9;  30,214,56;  6;
 05.01.2014; 10.5;  21,256.56;  0;
 06.01.2014; 20.4;  28,985.78;  1;
 07.01.2014; 22.7;  32,578.98;  2;

我想要做的是根据变量wday中的值过滤data.frame。例如,省略data.frame中变量wday中值0和1的所有行,使其看起来像这样:

 time_stamp price; renw_elec; wday;
 01.01.2014; 12.5;  25,562.25;  3;
 02.01.2014; 14.5;  23,896.56;  4;
 03.01.2014; 17.6;  26,634.87;  5;
 04.01.2014; 12.9;  30,214,56;  6;
 07.01.2014; 22.7;  32,578.98;  2;

我确实尝试用df$wday[is.na(df$wday)]<-0来做,如在cran上所描述的那样,但它根本不起作用。我做错了什么,或者如何以最好的方式解决这样的问题? 提前谢谢你的帮助! :)

2 个答案:

答案 0 :(得分:1)

这是对data.frame的基本过滤:

df[df$wday!=0 & df$wday!=1,]

df[df$wday>1,]

vec = c(0,1)
df[!(df$wday %in% vec),]

答案 1 :(得分:1)

使用dplyr,你也可以这样做:

library(dplyr)
df %>% filter(wday > 1)

  time_stamp price renw_elec wday
1 01.01.2014  12.5  25562.25    3
2 02.01.2014  14.5  23896.56    4
3 03.01.2014  17.6  26634.87    5
4 04.01.2014  12.9  30214.56    6
5 07.01.2014  22.7  32578.98    2