[英]How to compare values from current and previous rows based on other values in data frame without loops in 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.