r - 按列名称动态索引数据框

标签 r dataframe

我有一个数据框,我想提取特定列具有特定值的行。列名存储在字符数组中,值存储在列表中。

data <- data.frame(A=c("a","b","b"), B=c(1,2,2), C=(3,3,4))
column_key <- c("A", "B")
value_key <- list("b", 2)

显然,如果我对键的列名进行硬编码,我可以通过简单的索引来提取我想要的信息:

desired_rows <- data[data$A=="b" & data$B==2,]

desired_rows =
  A B C
2 b 2 3
3 b 2 4

但是如果列名存储在变量中,我该如何执行此操作。理想情况下,它应该是这样的:

key <- value_key
names(key) <- column_key
desired_rows <- data[key,]

但我无法使用列表索引 data.frame。

最佳答案

我在发布问题之前发现了这个技巧。

我可以将数据帧与与行长度相同的列表进行比较,该列表返回一个逻辑矩阵,指示每行中的哪个元素与列表中的相应元素匹配。因为我想找到完全匹配的行,所以我 apply all跨行函数以获取 data 行的逻辑索引.

desired_rows <- data[apply(data[column_key]==value_key, 1, all),]

关于r - 按列名称动态索引数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25687965/

相关文章:

r - 如何在R中使用sparklyr打开 "GZ FILE"?

使用 2 个向量参数翻转函数

r - 按组扫描第二个矩阵

r - 在knitr中抑制readOGR消息

python - from_records() 的 nrows 参数在 pandas 中有什么作用?

r - 从嵌套列表中提取数据,然后转换为整洁的数据框

python - 想要根据条件连接两个数据框的最后一行

r - 根据行的值删除列

r - 从一个字符串变量创建多个虚拟变量

python - 转移多个日期列的优雅方式 - Pandas