我已将数据存储在文本文件中。 我使用Windows 7进行IT设置和"。"作为小数分隔符,";"列表分隔符。
列名称为:label,x,y和f。
文本文件标题:
label x y f
2538359.78 4111150.05 1.73
2538379.35 4111150.05 1.73
2538398.91 4111150.05 1.72
2538418.48 4111150.05 1.70
我用R导入数据:
f <- read.delim("corners.txt", sep="\t", header = TRUE, dec=".", stringsAsFactors=TRUE)
我测试数据结构:
str(f)
R输出为:
'data.frame': 15390 obs. of 4 variables:
$ label: logi NA NA NA NA NA NA ...
$ x : num 2538360 2538379 2538399 2538418 2538438 ...
$ y : num 4111150 4111150 4111150 4111150 4111150 ...
$ f : num 1.73 1.73 1.72 1.7 1.68 1.66 1.63 1.6 1.57 1.53 ...
为什么x和y值都会错过小数部分? 如何以正确的方式加载数据?
我尝试使用Rstudio中的Import Dataset函数读取数据。 在主窗口中,我选择&#34;,&#34;作为小数点分隔符(??),在预览窗口中,所有内容都符合预期。
命令是:
g <- read.delim("corners.txt", dec=",")
我测试数据结构:
str(g)
我明白了:
'data.frame': 15390 obs. of 4 variables:
$ label: logi NA NA NA NA NA NA ...
$ x : Factor w/ 90 levels "2538359.78","2538379.35",..: 1 2 3 4 5 6 7 8 9 10 ...
$ y : Factor w/ 171 levels "4109169.94","4109189.81",..: 171 171 171 171 171 171 171 171 171 171 ...
$ f : Factor w/ 396 levels "0.11","0.13",..: 161 161 160 158 156 154 151 148 145 141 ...
数据保留x和y列的小数,但导入进程无法读取f列。
如何使用因子数转换来保留小数?这是对的吗?
h$x <- as.numeric(as.character(g$x))
结果再次是已处理的x列缺少小数:
'data.frame': 15390 obs. of 4 variables:
$ label: logi NA NA NA NA NA NA ...
$ x : num 2538360 2538379 2538399 2538418 2538438 ...
$ y : Factor w/ 171 levels "4109169.94","4109189.81",..: 171 171 171 171 171 171 171 171 171 171 ...
$ f : Factor w/ 396 levels "0.11","0.13",..: 161 161 160 158 156 154 151 148 145 141 ...
我也期待:
getOptions(digits)
并将其设置为8(而不是默认值7)。
谢谢。
答案 0 :(得分:3)
您在控制台中看到的并不总是100%代表真实值。当打印到控制台时,值被格式化为看起来很漂亮&#34;。这与options(digits=)
有关。将其设置为8将不会有助于您的值,因为您有超过8位数。试试10个或更多。或者不要担心它。您的数据已正确导入。
看看
f <- read.delim("corners.txt", sep="\t", header = TRUE, dec=".", stringsAsFactors=TRUE)
dput(head(f$x))
# c(2538359.78, 2538379.35, 2538398.91, 2538418.48)
dput()
将转储&#34; raw&#34;,不准确的数据。你可以看到你的小数值。或尝试
options(digits=10)
head(f$x)
# [1] 2538359.78 2538379.35 2538398.91 2538418.48
请注意str()
还有自己的数字选项
str(f, digits=10)
# 'data.frame': 4 obs. of 4 variables:
# $ label: logi NA NA NA NA
# $ x : num 2538359.78 2538379.35 2538398.91 2538418.48
# $ y : num 4111150.05 4111150.05 4111150.05 4111150.05
# $ f : num 1.73 1.73 1.72 1.7