簡體   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