使用 read_excel 或 dplyr

问题描述

我有一个保存在 excel 中的数据库,当我将它导入 R 时,有许多列应该是数字,但它们被列为字符。我知道在 read_excel 中我可以使用 col_types = "numeric" 指定每个列格式,但我有 > 500 列,所以这有点乏味。

关于在使用 read_excel 导入时或使用 dplyr 或类似的东西导入时如何执行此操作的任何建议?

我可以使用我编写的函数一一执行此操作,但它仍然需要写出每个列名

convert_column <- function(data,col_name) {
  new_col_name <- paste0(col_name)
  data %>% mutate(!!new_col_name := as.numeric(!!sym(col_name)))
}

  convert_column("gFat_OVX") %>%
  convert_column("gLean_OVX")%>%
  convert_column("pFat_OVX") %>%
  convert_column("pLean_OVX")

理想情况下,我想说“如果列的标题中包含文本“Fat”或“Lean”,则转换为数字”,但我愿意接受建议。

select(df,contains("Fat" | "Lean"))

鉴于我们这里是从 Excel 工作表开始的,我不确定如何制作一个允许人们对此进行测试的示例。

解决方法

dplyr::mutateacross 可能是读入数据后的解决方案。

类似这样,其中 df1 是来自 read_excel 的数据框:

library(dplyr)

df1 <- df1 %>% 
  mutate(across(contains(c("Fat","Lean")),~as.numeric(.x)))