![](/img/trans.png)
[英]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.