gpt4 book ai didi

r - 当数字以逗号作为小数分隔符时,将 xlsx 数据导入到 R

转载 作者:行者123 更新时间:2023-12-02 06:17:06 24 4
gpt4 key购买 nike

当原始小数点分隔符是逗号而不是点时,如何将数据从 .xlsx 文件导入到 R 中,以便数字表示为数字?

在处理 Excel 时,我所知道的唯一包是来自 tidyversereadxl

我正在寻找一种解决方案,不需要在任何其他软件中打开和编辑 Excel 文件(并且可以处理数百个要导入的列) - 如果可能的话,我会将所有 Excel 导出到 .csv 并使用我知道的工具导入它们,该工具可以采用 dec= 参数。

到目前为止,我最好的解决方案是将数字作为字符导入,然后对其进行转换:

library(dplyr)
library(stringr)

var1<- c("2,1", "3,2", "4,5")
var2<- c("1,2", "3,33", "5,55")
var3<- c("3,44", "2,2", "8,88")
df<- data.frame(cbind(var1, var2, var3))

df %>%
mutate_at(vars(contains("var")),
str_replace,
pattern = ",",
replacement = "\\.") %>%
mutate_at(vars(contains("var")), funs(as.numeric))

最佳答案

我强烈怀疑这些列被读取为字符还有其他原因,最有可能的是它们是可怕的“数字存储为文本”。

对于普通数字(存储为数字),在单个文件或整个系统设置中切换为逗号作为小数分隔符后,readxl::read_excel 可以正确读取数字。 (这是在我的 Windows 系统上。)即使在向该列中的一个单元格添加字符或设置 col_types="text" 时,我也会使用句点作为十进制读取数字,而不是作为逗号,提供更多证据表明 readxl 正在使用内部存储的数据类型。

我让 R 将逗号读取为小数的唯一方法是将数据作为文本而不是数字存储在 Excel 中。 (您可以通过在数字前面加上单引号来输入此内容,例如 '1,7。)然后,我会在单元格的角落看到一个绿色的小三角形,它会弹出警告“Number Stored”作为文本”。在我的探索中,我惊讶地发现 Excel 会对存储为文本的数字进行计算,因此这不是检查此问题的有效方法。

关于r - 当数字以逗号作为小数分隔符时,将 xlsx 数据导入到 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48120610/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com