我是R
的新手,我正在尝试阅读数据集。数据集在这里:
(以上链接将扩展为GMX文件存储文件夹链接,然后单击访客访问权限以检索文件。)
名为mydata.log的文件有32个没有标题的条目,它由2个由空格分隔的列组成。
我正在尝试强大的命令scan
test.frame<-scan(file="mydata.log",sep= "", nlines=32,blank.lines.skip=TRUE)
以上只读了前3行:
head(test.frame)
[1] 0.0000 0.0000 144.3210 0.3400 159.4070 0.8925
我也试过read.table
:
test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)
这个只读取前6行,如下所示:
names(test.frame)
[1] "V1" "V2"
> head(test.frame)
V1 V2
1 0.000 0.0000
2 144.321 0.3400
3 159.407 0.8925
4 198.413 0.9450
5 222.557 0.9975
6 235.464 1.0500
有人知道如何正确阅读此数据集吗?
一个相关问题:我可以控制正在读取的数据中的有效位数或小数位吗?
非常感谢...
答案 0 :(得分:2)
这段代码完美无缺:
test.frame<-read.table(file="mydata.log",sep= "", nrows=32,blank.lines.skip=TRUE)
您输出中只有6行的原因是因为您使用的是head
。要查看所有行,只需输入对象的名称:
> test.frame
V1 V2
1 0.000 0.0000
2 144.321 0.3400
3 159.407 0.8925
4 198.413 0.9450
5 222.557 0.9975
6 235.464 1.0500
7 296.918 1.1025
8 346.773 1.1550
9 442.955 1.2075
10 694.879 1.2600
11 892.436 1.3125
12 1492.970 1.3650
13 2916.960 1.4175
14 3596.060 1.4700
15 5278.950 1.5225
16 7480.730 1.5750
17 12259.800 1.6275
18 14032.600 1.6800
19 19565.600 1.7325
20 31427.700 1.7850
21 58221.400 1.8375
22 92283.900 1.9900
23 165601.000 1.9425
24 165703.000 1.9950
25 213925.000 2.8750
26 260381.000 2.1000
27 312701.000 2.1525
28 370853.000 2.2050
29 479303.000 2.2575
30 487265.000 2.3100
31 545225.000 2.3625
32 703186.000 2.4150
这是一种简单的方法,可以查看您拥有多少行(当您有许多观察时很有用):
nrow(test.frame) [1] 32
有关位数,请参阅round
命令。要查看命令的文档,请输入?
然后输入命令,在本例中为函数:?round
#note that you do not have to put "digits=2", you can just put "2", but this way is clearer
> rounded_test.frame <- round(test.frame, digits=2)
> rounded_test.frame
V1 V2
1 0.00 0.00
2 144.32 0.34
3 159.41 0.89
4 198.41 0.94
5 222.56 1.00
6 235.46 1.05
7 296.92 1.10
8 346.77 1.16
9 442.95 1.21
10 694.88 1.26
11 892.44 1.31
12 1492.97 1.36
13 2916.96 1.42
14 3596.06 1.47
15 5278.95 1.52
16 7480.73 1.57
17 12259.80 1.63
18 14032.60 1.68
19 19565.60 1.73
20 31427.70 1.78
21 58221.40 1.84
22 92283.90 1.99
23 165601.00 1.94
24 165703.00 2.00
25 213925.00 2.88
26 260381.00 2.10
27 312701.00 2.15
28 370853.00 2.21
29 479303.00 2.26
30 487265.00 2.31
31 545225.00 2.36
32 703186.00 2.42
请注意,在上面我创建了一个新对象,而不是替换当前的对象。如果你想要替换当前的数据并永远丢失数据(当然你要重新加载数据集!),那么你可以改用这一行:
test.frame <- round(test.frame, digits=2)
如果你真的不想压缩你的数字,你可能只对查看舍入数字感兴趣。您可以执行以下命令:
print(test.frame,digits=2)
答案 1 :(得分:1)
而不是建议的nrow()
,我建议str()
(“结构”)为您提供有关数据集(变量类等)的更多有用信息。它也有点神秘......:)