【发布时间】:2019-09-10 07:44:25
【问题描述】:
在我将 csv 文件导入 R 后,我注意到变量“MFR”被 R 读取为因子,但实际上它应该是数字。
head(FY18ADM)
SKU1 SKU2 SKU3 MFR FY
1 TF018AAE HA158AC HM610AC 4,485.18 FY18
2 TF018AAE HA156AC HM610AC 4,485.18 FY18
3 H7P74BAE HA158AC <NA> 2,409.75 FY18
4 H7P74BAE HA156AC <NA> 2,409.75 FY18
5 TF198AAE HA156AC HM610AC 9,652.60 FY18
6 TF201AAE HA156AC HM610AC 4,147.60 FY18
str(FY18ADM)
...
$ MFR : Factor w/ 57996 levels "-0.01","-0.02",..: 37684 37684 21073 21073 56149 36574 50464 55246 44319 27316 ...
我将此变量“MFR”从因子转换为数值。然后值发生了变化,这很奇怪。有谁知道为什么值会改变?
FY18ADM$MFR <- as.numeric(as.factor(FY18ADM$MFR))
head(FY18ADM)
SKU1 SKU2 SKU3 MFR FY
1 TF018AAE HA158AC HM610AC 37684 FY18
2 TF018AAE HA156AC HM610AC 37684 FY18
3 H7P74BAE HA158AC <NA> 21073 FY18
4 H7P74BAE HA156AC <NA> 21073 FY18
5 TF198AAE HA156AC HM610AC 56149 FY18
6 TF201AAE HA156AC HM610AC 36574 FY18
为了解决这个问题,我不得不将 csv 文件中的数据类型更改为货币。我相信在 R 中应该有办法做到这一点。非常感谢您的帮助!
【问题讨论】:
-
R 不知道如何将“4,485.18”强制转换为数字,因此它返回了与该特定因子水平相关的基础值 (37684)。很常见的错误。
-
如果您使用
readr::read_csv(),它应该检测MFR列并将其格式化为数字。如果没有,您可以指定cols(MFR = col_number())。
标签: r