簡體   English   中英

如何為包含列表中數值的任何行子集數據框?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM