【问题标题】:as.numeric is rounding off valuesas.numeric 正在舍入值
【发布时间】:2016-03-01 19:32:04
【问题描述】:

我正在尝试将字符列从数据框转换为数字。但是,我得到的结果是四舍五入的值。

无论我通过研究 SO 上具有相同性质的其他问题来尝试什么,都对我没有用。我检查了我要转换的列向量的类,它是一个字符,而不是一个因素。

这是我的代码 sn-p:

some_data <- read.csv("file.csv", nrows = 100, colClasses = c("factor", "factor", "character", "character"))
y <- Vectorize(function(x) gsub("[^\\.\\d]", "", x, perl = TRUE))
some_data$colC <- y(data1$colC)
data1$colD <- y(data1$colCD)

data1$colC <- as.numeric(data1$colC)
data1$colD <- as.numeric(data1$colD)

编辑:

> dput(head(data1))
structure(list(colA = structure(c(2L, 2L, 5L, 6L, 5L, 6L), .Label = c("(Other)",
"Direct", "Display", "Email", "Organic Search", "Paid Search", 
"Referral", "Social Network"), class = "factor"), colB = structure(c(1L, 
2L, 2L, 2L, 1L, 1L), .Label = c("No", "Yes"), class = "factor"), 
colC = c("4023107.87", "3180863.42", "2558777.81", "2393736.25", 
"1333148.48", "1275627.13"), colD = c("49731596.35", "33604210.26", 
"20807573.12", "20061467.30", "10488358.77", "10442249.09"
)), .Names = c("colA", "colB", "colC", "colD"), row.names = c(NA, 
6L), class = "data.frame")

【问题讨论】:

  • 我试图重现你的问题,但我没有file.csv
  • 你能提供一个可重现的例子吗?描述中的 read.csv() 不提供有关您的数据的任何信息
  • 尝试让您的示例可重现。也许只显示dput(head(data1))
  • 我已经添加了dput(head(data1))的输出

标签: r numeric


【解决方案1】:

我认为这是一个表示问题,而不是实际的舍入问题...

options("digits") ## 7

来自?options

‘digits’:控制打印数值时要打印的位数。这只是一个建议。有效值为 1...22 默认为 7。请参阅“print.default”中关于 大于 15 的值。

digits 可以一次性重置,即print(object,digits=...),或全局重置,即options(digits=20)(20 可能有点过分,但可以帮助您了解正在发生的事情:根据下面的结果,10 可能会起作用你的需求很好。)

as.numeric(data1$colC)
[1] 4023108 3180863 2558778 2393736 1333148 1275627
print(as.numeric(data1$colC),digits=10)
[1] 4023107.87 3180863.42 2558777.81 2393736.25 1333148.48 1275627.13
print(as.numeric(data1$colC),digits=20)
[1] 4023107.8700000001118 3180863.4199999999255 2558777.8100000000559
[4] 2393736.2500000000000 1333148.4799999999814 1275627.1299999998882

【讨论】:

  • 我刚刚检查过,你似乎是对的@Ben。谢谢。毕竟真的没有什么问题。我很抱歉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 2023-03-17
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
相关资源
最近更新 更多