【问题标题】:Read data .dat into R [duplicate]将数据.dat读入R [重复]
【发布时间】:2016-11-10 21:57:41
【问题描述】:

我想将此数据集导入R:http://www.stat.ufl.edu/~winner/data/retail92.dat

如果有人可以帮助我,我真的很感激。我尝试了 read.csv、read.table 但它们都不起作用。我不知道如何像在 SAS 中那样指定变量的长度。

【问题讨论】:

标签: r


【解决方案1】:

您可以使用根据字符数(固定宽度)识别列的函数。不过,您将需要修剪空白。您可以使用函数trimws。

xy <- read.fwf("http://www.stat.ufl.edu/~winner/data/retail92.dat",
                  widths = c(38, 6, 8, 8, 8))

> head(xy)
                                      V1    V2    V3     V4     V5
1 Acadia, LA                             3.672 0.882 12.364  3.872
2 Ada, ID                                9.251 1.152 21.384  3.861
3 Adams, CO                              7.489 0.911 16.718  3.507
4 Adams, IN                              7.822 1.216 15.772  2.470
5 Aiken, SC                              6.451 1.032 18.474 19.201
6 Alachua, FL                            8.240 1.052 17.505  3.862
> str(xy)
'data.frame':   845 obs. of  5 variables:
 $ V1: Factor w/ 845 levels "Acadia, LA                            ",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ V2: num  3.67 9.25 7.49 7.82 6.45 ...
 $ V3: num  0.882 1.152 0.911 1.216 1.032 ...
 $ V4: num  12.4 21.4 16.7 15.8 18.5 ...
 $ V5: num  3.87 3.86 3.51 2.47 19.2 ...

【讨论】:

  • 我认为第一列应该是 37,否则当第二个变量 >= 10 时取第一个数字。另外,strip.white=TRUE 是一个可以在输入阶段使用的参数 - @987654325 @
  • 数据集格式指定为here,即36、8、8、8、8
  • 如果你使用 read_fwf 和 readr 包中的 read_empty,read_empty 会自动计算出每一列的开始和结束位置,你就不必试图去计算它们自己一个人:mydata &lt;- data.frame(read_fwf(file = "http://www.stat.ufl.edu/~winner/data/retail92.dat", col_positions = fwf_empty(file = "http://www.stat.ufl.edu/~winner/data/retail92.dat")))。除此之外,read_fwf 更快。通过?read_fwf查看更多信息。
  • @thelatemail 随时编辑我的答案。
猜你喜欢
  • 2015-11-27
  • 1970-01-01
  • 2013-06-24
  • 2012-07-24
  • 2018-08-26
  • 2016-10-04
  • 2017-06-03
  • 1970-01-01
相关资源
最近更新 更多