我有一个有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)该子集返回一个新的数据帧,但没有任何观测值。看一下初始数据框,我知道有包含这些值的行,但是我无法让它们显示在新的数据框中。
发布于 2019-10-17 03:14:33
假设在26列中的任何一列中都可以找到这20个值,您可以使用以下代码:
library(tidyverse)
df %>%
filter_all(any_vars(. %in% dx.codes))发布于 2019-10-17 03:22:49
使用base R,您可以使用sapply检查数据帧中每个单元的每个代码,然后使用rowSums创建索引:
df1 <- as.data.frame(matrix(sample(1:52000, 26000), nrow = 1000), stringsAsFactors = F)
df1[rowSums(sapply(df1, `%in%`, dx.codes)) > 0,]https://stackoverflow.com/questions/58420168
复制相似问题