如何从多个 excel 文件的单个单元格中提取多个值?

问题描述 投票:0回答:1

我有很多 excel 文件。它们都是相同的格式,但观察结果不同。我正在尝试从一些特定的单元格中提取值。 有时没有,有时有一个,有时有多个;作为分隔符。 具体部分看起来像这样。

A列
时间
价值 1
价值2

我尝试了什么:

library(tidyverse)
library(readxl)

# this produces a list with all the filenames in the folder and subfolders
excel_files <- list.files(pattern = "*.xlsx", full.names = TRUE, recursive = TRUE)

# Define a function to extract values from a cell
extract_cell_values <- function(file, cell_name, delimiter) {
  data <- read_xlsx(file, col_names = FALSE)
  cell_text <- data[[cell_name]][1]
  if (is.na(cell_text) || is.null(cell_text) || cell_text == "") {
    values <- NA
  } else {
    values <- str_split(cell_text, delimiter)[1, ]
  }
}

# Define variables for cell name and delimiter
cell_name <- "K3"
delimiter <- ";"

# Use purrr::map to apply the extract_cell_values function to each file in the list
values_list <- map(excel_files, ~ extract_cell_values(file = .x, cell_name = cell_name, delimiter = delimiter))

我从第一个值单元格开始,使用 stringr。 我期待一个包含 2 列的列表。 文件名和值

但是尽管那里有值,但这些值都是 NA。

r
1个回答
0
投票

您要做的第一件事就是射杀将多个值放入单个单元格的白痴。
但是,如果您确定单元格内分隔符始终为“;”您可以尝试使用

unlist(strsplit(one_cell, ";"))
来获取单元格中单独行的数组。然后根据需要提取字母与数字字符。

但一步一步来。首先,只需从您的 XL 文件中提取一些数据并检查它。它是什么类,它是列表等吗?就目前而言,我们看不到您正在尝试读取的实际数据文件包含什么。

© www.soinside.com 2019 - 2024. All rights reserved.