Steem 和 R 语言:跟大鹏学 R 语言(6)读取文件

in #cn6 years ago (edited)

前情回顾:

本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。

在前几篇帖子里,我们学会了用R进行常规的数学运算和统计计算,并且做出了三张图:大气二氧化碳浓度时间序列,降水的季节变化图,北京的 PM2.5 日变化图。好像已经把R语言学完了。只是,总不能每次都把数据一个一个敲到代码里吧,也不能只使用R自带的数据自娱自乐吧。要是处理你自己文件里的大量数据呢?下面就解决这个问题。

本书里我们会使用示例数据,方便你跟我们同步操作。示例数据文件可以请R来自动生成。运行下面这两行命令:

dir.create('c:/r4r')
write.csv(as.data.frame(t(matrix(co2, 12, dimnames = list(month.abb, unique(floor(time(co2))))))), file = 'c:/r4r/co2.csv')

将来我们会解释这两条代码的含义,现在你大可略去,只管去c盘找到一个名叫r4r文件夹,里面有个名叫co2.csv的文件。这就是我们做示范的示例数据文件,你就当作是从我们的光盘上拷贝过来的吧。请在学习本书的过程中保留“c:/r4r”这个文件夹,我们在后续章节所做的示范都要用到它。

请用Excel或记事本打开co2.csv这个文件。这是个数据表,内容是1959年1月到1997年12月夏威夷Mauna Loa观测站的大气二氧化碳浓度,以年份为行,以月份为列。不要做任何修改,我们现在假定这是你即将处理的数据文件,看看如何对其中的数据进行操作。

2.1 输入:读取文件

读取文件,就是让R把数据读进R的脑子里。

如果你喜欢拷贝粘贴的方式,那么可以用 Excel 打开数据文件 co2.csv ,用鼠标选中全部数据区(ctrl+a),拷贝,然后在 R 中用下面的代码读取剪切板里的数据(试一下“tab小助理”。以后每个长命令都用一下,养成习惯):

mydata1 <- read.table(file = "clipboard", header = TRUE)

这条指令的含义是:读取剪切板里的数据,保存到mydata1这个数据框变量里。header = TRUE 翻译过来就是“文件头是有啊“,意思是数据表的第一行是列名称。

这时,注意观察RStudio的 右上窗,出现了 mydata1 的信息。鼠标单击可以查看内容,也可以用输入代码并运行:

mydata1
##       X    Jan    Feb    Mar    Apr    May    Jun    Jul
## 1  1959 315.42 316.31 316.50 317.56 318.13 318.00 316.39
## 2  1960 316.27 316.81 317.42 318.87 319.87 319.43 318.01
## 3  1961 316.73 317.54 318.38 319.31 320.42 319.61 318.42
## 4  1962 317.78 318.40 319.53 320.42 320.85 320.45 319.45
## 5  1963 318.58 318.92 319.70 321.22 322.08 321.31 319.58
## 6  1964 319.41 320.07 320.74 321.40 322.06 321.73 320.27
## ......
## 38 1996 362.09 363.29 364.06 364.76 365.45 365.01 363.70
## 39 1997 363.23 364.06 364.61 366.40 366.84 365.68 364.52

好了,读取数据就是这么简单。如果这已经满足你的需求,那么下一篇帖子就可以不看了。不过,我们建议你耐心读完下一篇帖子。因为,用拷贝粘贴的方式读取数据,优点是简单灵活易上手,适合临时用一下;缺点是重复性差,下回你可能忘了上次拷贝的是哪个区域的数据,这不是 R 的做事风格。更多情况下,我们要告诉R,数据文件保存在哪里,只需把上面命令的剪切板clipboard换成数据文件的路径即可。

下一篇里,我们将详细介绍这种方法。

Sort:  

恭喜你!您的这篇文章入选 @justyy 今日 (2018-04-22) 榜单 【优秀被错过的文章】, 回复本条评论24小时内领赏,点赞本评论将支持 @dailychina 并增加将来您的奖赏。

Congratulations! This post has been selected by @justyy as today's (2018-04-22) 【Good Posts You May Miss】, Steem On! Reply to this message in 24 hours to get rewards. Upvote this comment to support the @dailychina and increase your future rewards! ^_^

@dapeng, 嘻嘻,小可可来给你点赞啦~~~ img

Hey, just wanted to let you know I gave you an upvote because I appreciate your content! =D See you around

@greentomorrow did not give you an upvote and has made this exact same comment hundreds of times.

Click the flag to downvote this @greentomorrow comment!

greentomorrow.png

Here are a few ways to support @duplibot and help reduce spam and superfluous comments.

Coin Marketplace

STEEM 0.18
TRX 0.13
JST 0.030
BTC 57872.51
ETH 3061.57
USDT 1.00
SBD 2.25