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 如何将 "&gt;=30""&lt;3""Y""N" 转换为数字? 是的 - 但我没有将所有代码都放在这个问题中以保持简洁。在实际脚本中,我将所有这些字符转换为纯数字。然而,它仍然会夸大我的所有数据? 它不会“膨胀”。它使用因子值,而不是水平。 在删除符号然后以不同的顺序重新运行代码之后,我做的最后一件事就是将字符变量转换为数字,我解决了这个问题。谢谢,埃德 不要编辑您的标题以表明“已解决”。在正常情况下,一个被接受的答案可以达到这个目的。在这种情况下,您下面的答案不会真正帮助任何人,但指向重复项的指针会,因为这是您问题的实际根源。 【参考方案1】:

见FAQ 7.10。基本上,当您在一个因子上使用 as.numeric 时,您将获得基础整数。常见问题解答中有将它们转换为字符串表示的数字的方法。

【讨论】:

谢谢!! as.numeric(as.character(f)) 为我工作。我必须添加as.character

以上是关于as.numeric 函数更改我的数据框中的值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 as.numeric() 中的“警告消息:强制引入的 NA”[重复]

使用 Pandas 数据框中的值注释热图

如何根据条件更改考拉数据框中的值

R:随机更改数据框中的值

python pandas:重命名数据框中的系列?

用Pandas数据框中的值注释热图