难以删除行

时间:2015-06-24 16:02:03

标签: r

我的数据框中的一列-z-包含工作日。我想删除以“星期日”和“星期六”为因素的行。 我没有成功使用r<-z[-c(z$x=="Sunday" & z$x=="Saturday", ]r<-subset(z, x!=="Sunday" & x!=="Saturday")x是列的名称。

你能帮忙解决一下吗?谢谢。数据:

y   x
1   1   Monday
2   2   Monday
3   3   Monday
4   4   Monday
5   5   Monday
6   6   Monday
7   7   Monday
8   8   Friday
9   9   Friday
10  10  Friday
11  11  Friday
12  12  Sunday
13  13  Sunday
14  14  Sunday
15  15  Sunday
16  16  Saturday
17  17  Saturday
18  18  Saturday
19  19  Saturday
20  20  Saturday

更新: 我接受了答案,因为它与我提供的df一起工作。当我尝试将它应用于df时,我没有做任何事情。我用 flexW<-subset(flex, Day!="Sunday" & Day!="Saturday")

数据框中的选定变量:

  

STR(挠曲)   'data.frame':177237 obs。 14变量:    ....    $ Day:因子w / 7级“星期五”,“星期一”,..:2 2 2 2 2 2 2 2 2 2 ...

5 个答案:

答案 0 :(得分:3)

按照你的例子,试试这个:

subset(z, x!="Sunday" & x!="Saturday")

答案 1 :(得分:2)

只是一个基本的R解决方案:

dat[!dat$x %in% c("Sunday", "Saturday"), ]
    y      x
1   1 Monday
2   2 Monday
3   3 Monday
4   4 Monday
5   5 Monday
6   6 Monday
7   7 Monday
8   8 Friday
9   9 Friday
10 10 Friday
11 11 Friday

dplyr,语法几乎相同。

dat %>% filter(!x %in% c("Sunday", "Saturday"))

答案 2 :(得分:2)

> x[x$X != 'Saturday' & x$X!= 'Sunday',]
    y  x      X
1   1  1 Monday
2   2  2 Monday
3   3  3 Monday
4   4  4 Monday
5   5  5 Monday
6   6  6 Monday
7   7  7 Monday
8   8  8 Friday
9   9  9 Friday
10 10 10 Friday
11 11 11 Friday

答案 3 :(得分:1)

从错误输出中,您有" Friday"," Monday"作为输入。领先的空间被剥离,因为人们在这里试图重现,你需要使用dput(flex)而不是粘贴,所以这样的事情不会发生。

我猜你的星期六和星期日列是一样的,所以试试:

 z[!(z$x %in% c(" Saturday", " Sunday")), ]

答案 4 :(得分:0)

也许这对你有用:

 z[!z$x %in% c("Saturday", "Sunday"), ]