R 读取欧洲格式数值作为因子
R reads European format numerical values as factors
在R3.1.2,我上传了一个数据集。然而,我的数值读作因子。通过在线搜索,我发现这段代码应该将我的值从因子更改为数值:
as.numeric(as.character(athene))
但是在这一行中输入时,会出现以下消息:
'NAs introduced by coercion'
我的屏幕上出现了很多 NA。当我指定要更改的特定因素时,也会发生同样的情况
(as.numeric(as.character(MAG)).
当我查看我的数据框时,它没有改变,看起来仍然像以前一样。什么都没发生:
str(athene)
'data.frame': 72920 obs. of 17 variables:
$ MAG: int 0 0 0 0 0 0 0 0 1 0 ...
$ PCR: int 0 1 0 0 0 0 0 0 0 0 ...
$ LO : int 1 1 1 1 1 1 1 1 1 1 ...
$ WAT: int 0 0 0 0 0 0 0 0 0 0 ...
$ SVE: int 0 0 0 0 0 0 0 0 0 0 ...
$ ARA: int 0 0 1 0 0 0 0 1 0 0 ...
$ GRA: int 0 0 0 1 0 1 1 0 0 1 ...
$ FOR: int 0 0 0 0 0 0 0 0 0 0 ...
$ B13: Factor w/ 233 levels "100,00","101,00",..: 1 233 13 15 5 10 8 6 7 14 ...
$ B12: Factor w/ 1538 levels "1000,00","1001,00",..: 959 960 1013 1024 977 993 974 966 966 1011 ...
$ MTP: Factor w/ 198 levels "0,00","1,00",..: 137 179 36 133 122 122 110 113 197 110 ...
$ MB6: Factor w/ 264 levels "-1,00","-10,00",..: 238 238 240 236 240 233 234 236 236 251 ...
$ URB: int 1 0 0 0 1 0 0 0 0 0 ...
$ BI1: int 12 12 12 12 12 12 12 12 12 12 ...
$ MHF: int 11 9 7 7 7 8 9 10 0 8 ...
$ BI4: int 3 3 3 3 3 3 3 3 3 3 ...
$ ALT: int 1 1 3 4 1 4 1 1 1 1 ...
如果有人发现我在将阶乘值更改为数值时做错了什么,我们将不胜感激。
R不懂我们欧洲人用“,”作为小数点分隔符。将所有的“,”改为“。”在强制转换为 numeric
:
之前使用 gsub()
> B13 <- factor(rep(c("100,00","101,00","102,00"),1:3))
> B13
[1] 100,00 101,00 101,00 102,00 102,00 102,00
Levels: 100,00 101,00 102,00
> as.numeric(gsub(",",".",as.character(B13)))
[1] 100 101 101 102 102 102
在R3.1.2,我上传了一个数据集。然而,我的数值读作因子。通过在线搜索,我发现这段代码应该将我的值从因子更改为数值:
as.numeric(as.character(athene))
但是在这一行中输入时,会出现以下消息:
'NAs introduced by coercion'
我的屏幕上出现了很多 NA。当我指定要更改的特定因素时,也会发生同样的情况
(as.numeric(as.character(MAG)).
当我查看我的数据框时,它没有改变,看起来仍然像以前一样。什么都没发生:
str(athene)
'data.frame': 72920 obs. of 17 variables:
$ MAG: int 0 0 0 0 0 0 0 0 1 0 ...
$ PCR: int 0 1 0 0 0 0 0 0 0 0 ...
$ LO : int 1 1 1 1 1 1 1 1 1 1 ...
$ WAT: int 0 0 0 0 0 0 0 0 0 0 ...
$ SVE: int 0 0 0 0 0 0 0 0 0 0 ...
$ ARA: int 0 0 1 0 0 0 0 1 0 0 ...
$ GRA: int 0 0 0 1 0 1 1 0 0 1 ...
$ FOR: int 0 0 0 0 0 0 0 0 0 0 ...
$ B13: Factor w/ 233 levels "100,00","101,00",..: 1 233 13 15 5 10 8 6 7 14 ...
$ B12: Factor w/ 1538 levels "1000,00","1001,00",..: 959 960 1013 1024 977 993 974 966 966 1011 ...
$ MTP: Factor w/ 198 levels "0,00","1,00",..: 137 179 36 133 122 122 110 113 197 110 ...
$ MB6: Factor w/ 264 levels "-1,00","-10,00",..: 238 238 240 236 240 233 234 236 236 251 ...
$ URB: int 1 0 0 0 1 0 0 0 0 0 ...
$ BI1: int 12 12 12 12 12 12 12 12 12 12 ...
$ MHF: int 11 9 7 7 7 8 9 10 0 8 ...
$ BI4: int 3 3 3 3 3 3 3 3 3 3 ...
$ ALT: int 1 1 3 4 1 4 1 1 1 1 ...
如果有人发现我在将阶乘值更改为数值时做错了什么,我们将不胜感激。
R不懂我们欧洲人用“,”作为小数点分隔符。将所有的“,”改为“。”在强制转换为 numeric
:
gsub()
> B13 <- factor(rep(c("100,00","101,00","102,00"),1:3))
> B13
[1] 100,00 101,00 101,00 102,00 102,00 102,00
Levels: 100,00 101,00 102,00
> as.numeric(gsub(",",".",as.character(B13)))
[1] 100 101 101 102 102 102