首页 文章

难以删除行

提问于
浏览
0

我的数据框中的一列-z-包含工作日 . 我想删除"Sunday"和"Saturday"作为因素的行 . 我没有成功使用 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(flex)'data.frame':177237 obs . 14个变量:.... $ Day:因子w / 7级“星期五”,“星期一”,..:2 2 2 2 2 2 2 2 2 2 ...

5 回答

  • 1
    > 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
    
  • 2

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

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

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

    也许这对你有用:

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

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

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

    只是一个基础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"))
    

相关问题