繁体   English   中英

R:根据其他向量的值从数据框中删除行

[英]R: Deleting rows from a data frame based on values of other vector

所以我有一个包含个人购买产品篮子的数据框。 一排代表一个人的一篮子产品。 我想删除包含在名为 products.to.delete 的向量中列出的产品(表示为整数)的所有行(篮子)。 这是数据集的外观的小图像。

在此处输入图像描述

旁边我有一个包含大量必须删除的数字的向量。 我想从这个向量中删除所有包含一个值的行。

这是一些使其可重现的代码:

    dataframe <- as.data.frame( matrix(data = sample(10000,1000,replace = TRUE),20,50))
 products.to.delete <- sample(10000,200,replace = FALSE)

预先感谢您帮助我!

如果您的数据是data ,并且您的目标值向量是vals ,您可以这样做:

data[apply(data,1,\(r) !any(r %in% vals)),]

也就是说,在每行data (即apply(data,1...) )中,您可以检查是否有任何值在vals中。 反转 boolean 使用! , 创建一个全局逻辑向量来选择剩余的行

对于您的下一个问题,请创建可重复的示例,如下面的示例。

您所追求的称为过滤,可以通过以下方式在基础 R 中完成。

首先,创建一个名为 myfilter 的myfilter ,它是一个 boolean 向量,其长度与data.frame中的行数相同。

mydat <- data.frame("col1"=1:5, "col2"=letters[1:5])
  col1 col2
1    1    a
2    2    b
3    3    c
4    4    d
5    5    e


myfilter <- mydat$col2 %in% c("a", "c")
[1]  TRUE FALSE  TRUE FALSE FALSE
mydat[myfilter,]
col1 col2
1    1    a
3    3    c

然后只需将此 object 包含在括号[]中。 R 将保留值为TRUE的行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM