![](/img/trans.png)
[英]How can I subset rows in a data frame in R if any value in one row match values in a vector?
[英]How to subset a data frame for any row that contains a numeric value from a list?
我有一個包含 26 列和 1000 行的數據框。 我有一個包含 20 個值的列表。 我只想 select 數據框中包含我列表中任何(一個或多個)值的行。
我已經嘗試過子集和子集 + 過濾器功能。 以下是值列表:
dx.codes <- c(4140 , 4111 , 4118 , 41181 , 41189 , 412 , 4130 , 4131 , 4139 , 4140 , 41400 , 41401 , 41406 , 4142 , 4143 , 4144 , 4148 , 4149 , "V4581", "V4582")
df <- subset(sample.df, subset.df[1:1000, ] %in% dx.codes)
該子集返回一個新的數據框,但沒有任何觀察結果。 查看初始數據框,我知道有包含這些值的行,但是我無法讓它們顯示在新數據框中。
假設這 20 個值可以在 26 列中的任何一個中找到,您可以使用以下代碼:
library(tidyverse)
df %>%
filter_all(any_vars(. %in% dx.codes))
使用基礎 R 您可以使用sapply
檢查 dataframe 的每個單元格的每個代碼,然后使用rowSums
創建索引:
df1 <- as.data.frame(matrix(sample(1:52000, 26000), nrow = 1000), stringsAsFactors = F)
df1[rowSums(sapply(df1, `%in%`, dx.codes)) > 0,]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.