我有一个26列1000行的数据框。我有20个值的列表。我只想选择数据框中包含列表中任何(一个或多个)值的行。
我尝试了子集和子集+过滤器功能。这是值列表:
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)
该子集返回一个新的数据帧,但没有任何观察结果。查看初始数据框,我知道有包含这些值的行,但是我无法让它们显示在新数据框中。
答案 0 :(得分:1)
假定可以在26列中的任何一列中找到这20个值,则可以使用以下代码:
library(tidyverse)
df %>%
filter_all(any_vars(. %in% dx.codes))
答案 1 :(得分:0)
使用基数R,您可以使用sapply
来检查数据帧的每个单元格的每个代码,然后使用rowSums
创建索引:
df1 <- as.data.frame(matrix(sample(1:52000, 26000), nrow = 1000), stringsAsFactors = F)
df1[rowSums(sapply(df1, `%in%`, dx.codes)) > 0,]