as.numeric 函数更改我的数据框中的值[重复]
Posted
技术标签:
【中文标题】as.numeric 函数更改我的数据框中的值[重复]【英文标题】:The as.numeric function changes the values in my dataframe [duplicate] 【发布时间】:2014-05-12 12:01:46 【问题描述】:我有一列包含速度测量值,我需要将其更改为数字,以便我可以同时使用平均值和求和函数。但是,当我转换它们时,值会发生很大变化。
这是为什么?
这是我的数据最初的样子:
这是数据框的结构:
'data.frame': 1899571 obs. of 20 variables:
$ pcd : Factor w/ 1736958 levels "AB101AA","AB101AB",..: 1 2 3 4 5 6 6 7 7 8
$ pcdstatus : Factor w/ 5 levels "Insufficient Data",..: 4 4 4 4 4 2 3 2 3 3 ...
$ mbps2 : Factor w/ 3 levels "N","N/A","Y": 2 2 2 2 2 2 2 2 2 2 ...
$ averagesp : Factor w/ 301 levels ">=30","0","0.2",..: 301 301 301 301 301 301 301
$ mediansp : Factor w/ 302 levels ">=30","0","0.1",..: 302 302 302 302 302 302 302
$ maxsp : Factor w/ 301 levels ">=30","0","0.2",..: 301 301 301 301 301 301 301
$ nga : Factor w/ 2 levels "N","Y": 1 2 1 1 1 1 1 2 2 2 ...
$ connections: Factor w/ 119 levels "<3","0","1","10",..: 2 2 2 2 2 1 2 1 2 2 ...
$ pcd2 : Factor w/ 1736958 levels "AB10 1AA","AB10 1AB",..: 1 2 3 4 5 6 6 7 7 8
$ pcds : Factor w/ 1736958 levels "AB10 1AA","AB10 1AB",..: 1 2 3 4 5 6 6 7 7 8
$ oslaua : Factor w/ 407 levels "","95A","95B",..: 374 374 374 374 374 374 374
$ x : int 394251 394232 394181 394251 394371 394181 394181 394331 394331
$ y : int 806376 806470 806429 806376 806359 806429 806429 806530 806530
$ ctry : Factor w/ 4 levels "E92000001","N92000002",..: 3 3 3 3 3 3 3 3 3 3 ...
$ hro2 : Factor w/ 13 levels "","E12000001",..: 12 12 12 12 12 12 12 12 12 12
$ soa1 : Factor w/ 34381 levels "","E01000001",..: 32485 32485 32485 32485
$ dzone1 : Factor w/ 6507 levels "","E99999999",..: 128 128 128 128 112 128 128
$ soa2 : Factor w/ 7197 levels "","E02000001",..: 6784 6784 6784 6784 6784 6784
$ urindew : int 9 9 9 9 9 9 9 9 9 9 ...
$ soa1ni : Factor w/ 892 levels "","95AA01S1",..: 892 892 892 892 892 892 892 892
这是将我的变量转换为数值变量的代码。
#convert individual columns to numeric variables
total$averagesp <- as.numeric(total$averagesp)
total$mediansp <- as.numeric(total$mediansp)
total$maxsp <- as.numeric(total$maxsp)
total$mbps2 <- as.numeric(total$mbps2)
total$nga <- as.numeric(total$nga)
total$connections <- as.numeric(total$connections)
但之后我有这个奇怪的输出,我的所有数据都被夸大了:
任何帮助将不胜感激 - 谢谢!
【问题讨论】:
您希望 R 如何将">=30"
、"<3"
、"Y"
和 "N"
转换为数字?
是的 - 但我没有将所有代码都放在这个问题中以保持简洁。在实际脚本中,我将所有这些字符转换为纯数字。然而,它仍然会夸大我的所有数据?
它不会“膨胀”。它使用因子值,而不是水平。
在删除符号然后以不同的顺序重新运行代码之后,我做的最后一件事就是将字符变量转换为数字,我解决了这个问题。谢谢,埃德
不要编辑您的标题以表明“已解决”。在正常情况下,一个被接受的答案可以达到这个目的。在这种情况下,您下面的答案不会真正帮助任何人,但指向重复项的指针会,因为这是您问题的实际根源。
【参考方案1】:
见FAQ 7.10。基本上,当您在一个因子上使用 as.numeric
时,您将获得基础整数。常见问题解答中有将它们转换为字符串表示的数字的方法。
【讨论】:
谢谢!!as.numeric(as.character(f))
为我工作。我必须添加as.character
。以上是关于as.numeric 函数更改我的数据框中的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章