58

为这个问题的简单性提前道歉。我正在尝试使用以下代码将 .dat 文件从网站导入 R:

www = "http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat"
data <- read.delim(www, header = TRUE, sep="\t") 

我想访问 data.frame 的 Value 部分,但是,我不确定 data.frame 的尺寸,如果我输入 ncol(data) 它会返回 1,我期望它是 3。如何访问此 data.frame 的“第三”列?

4

1 回答 1

70

dat 文件在实际数据之前有一些额外的信息行。用参数跳过它们skip

read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
           header=TRUE, skip=3)

如果您不熟悉数据集,一个简单的检查方法是首先readLines检查几行,如下所示:

readLines("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat", 
          n=10)
# [1] "Ozone data from CZ03 2009"   "Local time: GMT + 0"        
# [3] ""                            "Date        Hour      Value"
# [5] "01.01.2009 00:00       34.3" "01.01.2009 01:00       31.9"
# [7] "01.01.2009 02:00       29.9" "01.01.2009 03:00       28.5"
# [9] "01.01.2009 04:00       32.9" "01.01.2009 05:00       20.5"

在这里,我们可以看到实际数据从 开始[4],所以我们知道要跳过前三行。

更新

如果您真的只想要该Value列,您可以通过以下方式做到这一点:

as.vector(
    read.table("http://www.nilu.no/projects/ccc/onlinedata/ozone/CZ03_2009.dat",
               header=TRUE, skip=3)$Value)

同样,readLines它有助于帮助我们找出我们将要导入的列的实际名称。

但是与读取整个数据集并稍后提取相比,我认为这样做并没有太大优势。

于 2012-07-26T07:05:51.980 回答