我想排除包含特定值的观察结果。 也就是说,我的列中的观察结果如下所示:501.512.518。 这些代表每次观察三个不同的个体。 现在我想排除包括例如个人512
有没有办法创建可以排除包含值512但不等于或以512开头的观测值的子样本?
答案 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