从数据框中删除指定级别的因子行

时间:2017-10-19 02:33:49

标签: r

我有一个在R中可以解决的非常简单的问题,但是我一直在努力解决这个问题而没有找到适当的解决方案。

从以下数据框中,我只需要完全删除包含' U'对于性,同时也删除了级别' U'来自因素性。而且我还希望能够通过指定ID号矢量来删除我选择的任何ID。我的实际数据集远大于此。

datf <- read.table(text = "ID   Sex Mor SITE
                           110   F   W    1
                           111   M   W    2
                           112   M   B    4
                           135   F   W    3
                           556   M   B    1
                           557   U   B    1
                           558   M   W    2",
                   header = TRUE)

我以为我能够解决这个问题,但我已尝试过本网站上建议的各种方法,例如droplevels-但我似乎无法弄明白。非常感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

  • 删除Sex == 'U'和放弃级别

    的行
    datf <- droplevels(datf[!datf$Sex == 'U',])
    str(datf)
    
    'data.frame':   6 obs. of  4 variables:
     $ ID  : int  110 111 112 135 556 558
     $ Sex : Factor w/ 2 levels "F","M": 1 2 2 1 2 2
     $ Mor : Factor w/ 2 levels "B","W": 2 2 1 2 1 2
     $ SITE: int  1 2 4 3 1 2
    
  • 删除vector中ID的任何行

    datf <- datf[!(datf$ID %in% c(110, 558)),]
    datf
    
       ID Sex Mor SITE
    2 111   M   W    2
    3 112   M   B    4
    4 135   F   W    3
    5 556   M   B    1