r - 如何调整 read_excel 使千位分隔符不更改为小数点?
问题描述
目前,我使用以下代码将 Excel 文件(存储在我的 PC 上的文件夹中)存储在列表中。
decrease_names <- list.files("4_large_decreases",pattern = ".xlsx",full.names = T)
decrease_list <- sapply(decrease_names,read_excel,simplify = F)
之后,我使用以下代码将数据框组合成一个对象。
decrease <- decrease_list %>%
keep(function(x) nrow(x) > 0) %>%
bind_rows()
我遇到的问题是存储在文件夹中的 Excel 文件包含小数点(点“。”)以及千位分隔符(逗号“,”)。我认为 R(尤其是 read_excel() )将千位分隔符转换为小数点,这会导致数据不正确。
虽然我知道我可以先在 Excel 中删除千位分隔符,但这会导致大量手动工作,因此我对识别千位分隔符并保持其完整(或删除它,目标是保持数据的性质正确)。
编辑:正如@dario 建议的那样decrease_list
,我在运行代码后添加了一个存储在其中的 tibble 片段。片段如下所示:
Raised Avg. change
526.000 2.04
186.000 3.24
...
在栏目中提出“。” 以前是“,”,现在变成了“.”。这 ”。” 平均 变化是一个“。” 已经。
解决方案
假设每个excel文件都包含相同格式的数据,那么我们可以应用如下代码:
library(tidyverse)
library(readxl)
decrease_names <- list.files("4_large_decreases",pattern = ".xlsx",full.names = T)
# 10 columns as written in your comment
decrease <- sapply(decrease_names, readxl::read_excel, col_types = rep("text", 10L), simplify = F)
# Not tested
decrease <- decrease_list %>%
keep(function(x) nrow(x) > 0) %>%
bind_rows() %>%
mutate(across(where(is.character), ~ as.numeric(gsub("\\,", "", .x))))
推荐阅读
- python - 按子值对字典进行排序
- ios - 尝试使用 Swift HealthKit 会导致 Apple WatchKit 在视图加载时崩溃?
- module - Rust 参考模块
- bash - Bash 在 || 之后执行多个命令 如果非 0
- jwt - 如何在创建 jwt 期间通过 SecurityTokenDescriptor 和 ClaimsIdentity 添加 auth_time 声明
- python - 如何在 Google Colab 中获得分配的 GPU 规格
- python - 在 Client.calls.create()l 中使用 twiml 属性
- angular - 带有 Angular 和 Windows 身份验证的 ASP .NET Core API - 预检请求
- mysql - 将变量传递到 CURSOR 的 SELECT 查询 (MySQL)
- botframework - 虚拟助理不会传递给 MS 团队的技能