《初识数据结构——“践”完才“行”》

看完了《R语言实战》的第一章和第二章,也听了猴子的知乎live,接下来记录一下这部分的学习感受。

首先是安装R和Rstudio,之前分不清楚这两者的区别,在没有装Rstudio时敲了一下代码,今天装了Rstudio之后又试了一下,体验确实不一样,就像飞信和微信的区别。

第一章简单介绍了R,包括如何安装软件和什么是包,还有一些示例。

第二章主要包括数据结构和数据输入,其中数据结构包括如何定义不同的对象类型和如何使用这些数据,而数据的输入介绍了各种不同类型数据文件的导入。

R包含许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表,如图1所示。

图1

上述对象类型在书中都讲得很清楚了,但更为关键的在于如何灵活地使用。

首先是要记住各个对象类型对应的函数,比如向量为c(),数据框为data.frame();其次要知道括号里面应该填入什么,比如数据框中不同的列向量可以为不同的类型,但同一列只能为一种类型(字符型、数值型或逻辑型中的一种);最后就是括号中的参数,还有其他的相关函数了,这些可能都需要多接触多实践,才可能记得住,用得来。

接下来是我的实践,读取猴子提供的病例excel数据,并使用合适的数据结构对这些数据进行存储,完成简单的数据分析。我采用了三种方式:手动输入数据,csv文件导入,还有excel表格导入。

a. 手动输入数据。

跟着猴子的代码打了一遍,跟上思路。

首先是要有行row和列col的概念,在头脑中想象一下你要创建的这个列表每一行是什么,每一列又是什么。在数据框中,列表示变量,行表示观测。

图2

然后是把每一列定义为一个向量,需要用到c()函数,只有把每个向量取好了名字,之后才能调用,注意名字不要取重复了,注意()中的数据必须是同一个类型:即数值型,字符型或逻辑型。

在图2代码中可以看到,病人编号和年龄都是数值型,不需要加引号,姓名name中的数据为字符型,加单引号,糖尿病类型和病情中的数据为字符型,加双引号。

关于这里的单引号和双引号,对于定义字符型变量来说是没有影响的,我修改之后运行结果是一样的。

区别在于单引号和双引号本身作为字符的时候,注意要加\转义符,详细情况参见:

https://www.zhihu.com/question/23076362

接下来是查找数据,简单的统计,还有如何增加一个新的病人的信息到已有的表中,会用到函数rbind()和cbind()。

最后就是运行程序,在console中得到最终的数据表格结果,如图3所示。处女座的我觉得没太对齐,但暂时还没研究如何处理。

图3

b. csv文件导入。

首先需要把excel文件另存为csv文件。

代码比较简单(见图4),用到read.table()函数,具体用法参见《R语言实战》2.3.2。

需要注意的是,文件位置,Windows中默认的是“\”,与R中的“/”相反,我的做法是把地址复制过来后修改,不知道有没有更好的办法?看到另一个办法,那就是把“\”改为“\\”。

图4

接下来看看结果,见图5。

图5

注意到,姓名,年龄等都是Factor因子,因为read.table()函数默认把字符变量转变为因子。要改变这个情况,可以加入stringsAsFactors = FALSE,结果如下:

图6

c. 导入excel数据

与csv的导入类似,不一样的地方在于:

1 要安装几个包:xlsx,xlsxjars,rJava。遇到问题:rJava无法载入,原因是需要下载64位的JRE安装才可使用。(出现以上错误的原因是你的Java版本是32位的,而你的R是64位的,因此,请下载64位版本的JRE,并且将环境变量JAVA_HOME换为64位JRE的位置,JRE可以在官网下载:http://www.java.com/en/download/manual.jsp

2 加载xlsx包。

3 若是出现乱码(可能是中文的问题),则加入代码:encoding='UTF-8'。(参考例子:

http://blog.csdn.net/cheyennelam/article/details/56488622

代码如下:

图7

乱码结果如下:

图8

正确结果如下:

图9

需要阅读的书籍和文章

《数据结构算法》,《 中国人工智能的未来之路》,《RStudio使用指南》。

遇到并解决的问题

1 在R中,安装包的时候,library文件夹无法写入,退出R,管理员身份运行即可。

2 老生常谈的问题:逗号",",分号“;”,双引号“”和单引号‘’,$和&一定不要搞混了(查找数据的时候),但这很难避免,切换输入法(由于要输入中文)并不是每一次都可以做对的。R语言实战也讲过,参见P15:R语言编程中的常见错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,552评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,666评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,519评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,180评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,205评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,344评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,781评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,449评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,635评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,467评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,515评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,217评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,775评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,851评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,084评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,637评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,204评论 2 341

推荐阅读更多精彩内容

  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    Joyyx阅读 8,319评论 0 16
  • 1、三种常见的清洗数据 1)重复值数据 定义:把数据结构中,行数据相同的剔除 unique 函数语法: uniqu...
    雨一流阅读 715评论 0 2
  • 一、简单明快的早期时代 1、Service 越来越多,调用关系变复杂,前端搭建本地环境不再是一件简单的事。考虑团队...
    bo_song阅读 247评论 0 2
  • 密如流沙的金色 以社团的形式熠熠生辉 那半掩的娇羞 透过叶间的缝隙 眯眼打探着阳光的讯息 遮挡不住的幽香 不用推窗...
    默默huangjuan阅读 332评论 4 6
  • 夜色下缓缓归航的游船,泊靠在静谧无人的岸边,痕迹尽显一天的风雨征程,而明天,又是怎样令人振奋的起航......
    路人_df98阅读 231评论 0 0