Grep 行索引的未命名列
Grep unnamed column for row indices
我们收到 excel 格式的月度报告,我只需要特定的值。以前,我能够使用 readxl 来 grep 所需的行号列,然后从那里开始:
library(readxl)
file <- read_excel(readxl_example("deaths.xlsx"), col_names = FALSE))
row_pos <- grep(pattern = "actor", file$..2)
然后我可以为我想要的特定列搜索更多内容:
col_pos <- grep(pattern = "Has Kids", file)
这用于 return 我想要的行位置,我可以提取并继续修改我的数据。
我在这里故意使用 now 不正确的 $..2
语法。最近的更新将此约定更改为 $...2
我的问题是如何为第一个 grep
实施更稳健的选择,这样当 readxl(或任何其他包)中的语法发生微小变化时,我不必更新我的所有代码实施的?
我试过:
row_pos <- grep(pattern = "actor", x = file %>% select(contains("2")))
但这只是 return 的第一个值。
这是管道的其余部分,用于了解数据发生的情况。
values <- as.data.frame(t(file[row_pos, col_pos]), stringsAsFactors = FALSE, row.names = NULL)
等
谢谢!
一位同事建议使用 dplyr::pull,它将值提取为向量。这对于非结构化数据很有用,在这些数据中,您实际上需要四处寻找所需的值,然后将它们重新整理成正确的格式。
row_pos <- grep(pattern = "actor", pull(data[,2]))
谢谢大家!
我们收到 excel 格式的月度报告,我只需要特定的值。以前,我能够使用 readxl 来 grep 所需的行号列,然后从那里开始:
library(readxl)
file <- read_excel(readxl_example("deaths.xlsx"), col_names = FALSE))
row_pos <- grep(pattern = "actor", file$..2)
然后我可以为我想要的特定列搜索更多内容:
col_pos <- grep(pattern = "Has Kids", file)
这用于 return 我想要的行位置,我可以提取并继续修改我的数据。
我在这里故意使用 now 不正确的 $..2
语法。最近的更新将此约定更改为 $...2
我的问题是如何为第一个 grep
实施更稳健的选择,这样当 readxl(或任何其他包)中的语法发生微小变化时,我不必更新我的所有代码实施的?
我试过:
row_pos <- grep(pattern = "actor", x = file %>% select(contains("2")))
但这只是 return 的第一个值。
这是管道的其余部分,用于了解数据发生的情况。
values <- as.data.frame(t(file[row_pos, col_pos]), stringsAsFactors = FALSE, row.names = NULL)
等 谢谢!
一位同事建议使用 dplyr::pull,它将值提取为向量。这对于非结构化数据很有用,在这些数据中,您实际上需要四处寻找所需的值,然后将它们重新整理成正确的格式。
row_pos <- grep(pattern = "actor", pull(data[,2]))
谢谢大家!