我想将数据框中保存为字符的$ Annual.income列转换为数字。我使用的代码给出了NA值,尽管新类是数字。
我一直在论坛上寻找答案,但是没有一个问题能回答我的问题: 我在Annual.income栏中没有NA,只有数字。所有数据都格式化为具有“。”。代替“,”代表小数。 这是我使用的代码。
array(1) {
[0]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(12) "First Person"
["phone_number"]=>
string(9) "112233445"
}
}
array(2) {
[0]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(13) "Second Person"
["phone_number"]=>
string(9) "123456789"
}
[1]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(12) "Second Person"
["phone_number"]=>
string(9) "123456789"
}
}
array(3) {
[0]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(16) "Third Person"
["phone_number"]=>
string(9) "012345678"
}
[1]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(16) "Third Person"
["phone_number"]=>
string(9) "012345678"
}
[2]=>
object(stdClass)#2 (2) {
["recipient_name"]=>
string(16) "Third Person"
["phone_number"]=>
string(9) "012345678"
}
}
array(4) {
... // it just overwriting the data with duplicates
}
********************************更新**************** ****************************
这是Annual.income列的内容。
data$Annual.income <- as.numeric(as.character(data$Annual.income))
以下内容仍然给我NAs。
dput(data$Annual.income)
c("34 500", "51 400", "43 200", "40 100", "36 400", "39 100",
"41 900", "48 700", "45 500", "45 500", "49 100", "35 100", "34 500",
"29 200", "32 200", "36 300", "35 800", "31 500", "33 000", "34 600",
"32 100", "32 000", "31 400", "33 200", "42 600", "29 200", "34 600",
"29 200", "34 100", "30 600", "34 034", "33 600", "31 000", "35 500",
"30 600", "30 600", "30 600", "30 800", "34 034", "33 200", "32 900"
)
我使用环境的导入数据集命令导入了数据,并且未选中stringAsfactor,选中标题= YES。分隔符=分号,十进制=句点。 谢谢 ...
答案 0 :(得分:0)
这里的空格引起了问题,只需用gsub()
删除所有空格字符,例如
Annual.income <- c("34 500", "51 400", "43 200", "40 100", "36 400", "39 100",
"41 900", "48 700", "45 500", "45 500", "49 100", "35 100", "34 500",
"29 200", "32 200", "36 300", "35 800", "31 500", "33 000", "34 600",
"32 100", "32 000", "31 400", "33 200", "42 600", "29 200", "34 600",
"29 200", "34 100", "30 600", "34 034", "33 600", "31 000", "35 500",
"30 600", "30 600", "30 600", "30 800", "34 034", "33 200", "32 900"
)
as.numeric(gsub("\\s", "", Annual.income))
#> [1] 34500 51400 43200 40100 36400 39100 41900 48700 45500 45500 49100
#> [12] 35100 34500 29200 32200 36300 35800 31500 33000 34600 32100 32000
#> [23] 31400 33200 42600 29200 34600 29200 34100 30600 34034 33600 31000
#> [34] 35500 30600 30600 30600 30800 34034 33200 32900
由reprex package(v0.2.1)于2019-05-17创建