我是R
的新手,我正试图在数据集中阅读。数据集在这里:
(上面的链接将展开为一个GMX文件存储文件夹链接,并单击Guest访问来检索文件)
名为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
有人知道如何正确读取这个数据集吗?
一个相关的问题:我能控制被读入的数据中有效数字或小数位数的数量吗?这行代码工作得很好:
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)
不推荐nrow()
,我推荐str()
("structure"),它能给你更多关于数据集(变量类等)的有用信息。它也不那么神秘....:)