使用 read_excel 或 dplyr 将列从 chr 批量转换为 num
Batch Convert Columns from chr to num with either read_excel or 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")
理想情况下,我想说“如果某列在 header 中包含文本“Fat”或“Lean”,则转换为数字”,但我愿意接受建议。
select(df, contains("Fat" | "Lean"))
考虑到我们在这里从 excel sheet 开始,我不确定如何制作一个允许人们对此进行测试的示例。
dplyr::mutate
和across
可能是读入资料后的解决方案
类似这样,其中 df1
是来自 read_excel
的数据框:
library(dplyr)
df1 <- df1 %>%
mutate(across(contains(c("Fat", "Lean")), ~as.numeric(.x)))
我在 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")
理想情况下,我想说“如果某列在 header 中包含文本“Fat”或“Lean”,则转换为数字”,但我愿意接受建议。
select(df, contains("Fat" | "Lean"))
考虑到我们在这里从 excel sheet 开始,我不确定如何制作一个允许人们对此进行测试的示例。
dplyr::mutate
和across
可能是读入资料后的解决方案
类似这样,其中 df1
是来自 read_excel
的数据框:
library(dplyr)
df1 <- df1 %>%
mutate(across(contains(c("Fat", "Lean")), ~as.numeric(.x)))