我的数据是来自Microsoft的CSV文件。该文件包含几个数字变量(例如工资、权重),这些变量的格式如下: 123,456 (12万3456)。
当我使用以下命令将这个文件("old_file")导入R时:my_file = read.csv("old_file.csv"),所有的数值变量都会自动转换为因子变量类型。
为了解决这个问题,在将文件导入R后,我尝试手动将这些变量转换为数值变量类型:
my_file$var_1 = as.numeric(my_file$var_1) 然而,这样做似乎“扭曲”了数据。例如,自然发生的"var_1“值似乎消失了。我还绘制了这些数据的一些直方图,并且这些数值转换变量的分布与预期的分布不匹配。
通过打开Excel电子表格并单击"format“按钮,从数字变量中删除”逗号“,并在每个数字的末尾添加".00”,我就能够解决这个问题。例如,123,456现在变成123456.00。

一旦我在原来的Excel电子表格中做了这个更改,问题就解决了。
我的问题:是否有办法在R中解决这个问题,而不是在原始的Excel电子表格中手工完成这个问题?我只是碰巧捕捉到这个格式化错误--在将来,有什么方法可以自动防止这种情况发生在R中吗?例如,如何确保将“在Excel文件中显示为数字”的变量作为数字类型导入R中?
发布于 2021-11-17 22:11:48
我相信,通过将excel文件保存为csv (应该在数字周围插入引号),然后使用read_csv()函数从重新读卡器包读取文件,可以解决这个问题。
测试数据:
Value1,Value2
"123,456","456,678"
"234,567","445,678,899"library(readr)
read_csv("~/Desktop/test.csv")
#> Rows: 2 Columns: 2
#> Warning in min(width - (crayon::col_nchar(types) + nchar(counts) + 4)): no non-
#> missing arguments to min; returning Inf
#> ── Column specification ────────────────────────────────────────────────────────
#>
#> ℹ Use `spec()` to retrieve the full column specification for this data.
#> ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
#> # A tibble: 2 × 2
#> Value1 Value2
#> <dbl> <dbl>
#> 1 123456 456678
#> 2 234567 445678899这些数字现在是数字(双精度整数)。
与read.csv()函数相比:
read.csv("~/Desktop/test.csv")
#> Value1 Value2
#> 1 123,456 456,678
#> 2 234,567 445,678,899(数字格式不正确)
https://stackoverflow.com/questions/70012048
复制相似问题