排除包含特定值的观察结果

时间:2015-12-29 17:16:00

标签: r

我想排除包含特定值的观察结果。 也就是说,我的列中的观察结果如下所示:501.512.518。 这些代表每次观察三个不同的个体。 现在我想排除包括例如个人512

有没有办法创建可以排除包含值512但不等于或以512开头的观测值的子样本?

3 个答案:

答案 0 :(得分:1)

这个问题缺乏一些细节,但我希望这可能有所帮助。我会使用 grepl 函数 为了删除数据集中的所有行(其中一个)列(表示为col)包含(但不以*开头)512,请执行:

newDF <- oldDT[!grepl('.512', oldDF$col), ]
每次“col”列具有“.512”模式时,

grepl('。512',oldDF $ col)将返回 TRUE 的逻辑向量在其中。
它前面的会否定它,从而删除那些行 希望它有所帮助。

答案 1 :(得分:0)

如果您有一个更具体的示例但做出一些假设会很有帮助,并且使用dplyr您可以执行以下操作:

exclusion_values <- c(501, 512, 518)
new_df <- old_df %>% filter(! col_of_interest %in% exclusion_values)

这是你在找什么?

答案 2 :(得分:0)

@steveb提供的答案很棒,但您可能需要一个基本R替代方案:

使用mtcars数据集

的示例
df <- data.frame(Group = rep(c('A', 'B', 'C', 'D'), 50),
                 Number = sample(500:600, 200, replace = T))

to_drop&lt; - c(512)

df <- df[!(df$Number %in% to_drop),]

 > df
    Group Number
1       A    518
2       B    536
3       C    518
4       D    505
5       A    544
6       B    511
7       C    507