R语言第四章学习——基本数据管理(多图)

数据分析中最重要的并不是如何敲代码,如何收集数据,而是数据分析前的准备——数据导入,数据框架的构建、数据的基础处理、数据分析的问题提出和思考......

4.1一个示例

(创建leadership数据框)

需要解决数据管理方面的问题:

01.比如对“NA”的处理,我们需要一种处理不完整数据的方法。

02.是否需要对经理人的年龄进行重新编组,或者我们希望研究特定时间段的数据结果......等。

以上这些就需要我们对收集到数据进行有效处理,比如数据的组合、排序等。

4.2创建新变量

01.方法:变量名<-表达式

02.目的:定向研究中需要对现有的变量进行变换时。

03.主要使用算术运算符

比如一个mydata的数据框,其中的变量为x1和x2,创建一个新变量sumx存储以上两个变量的和,并创建一个名为meanx的新变量存储这两个变量的均值。

sumx<-x1+x2

meanx<-(x1+x2)/2,以上代码将产生一个错误的结果。

正确的解决方案如下:

transform()函数简化了按需创建新变量并将其保存到数据框中的过程。


4.3变量的重编码

重编码涉及根据同一个变量和/或其他变量的现有值创建新值的过程。使用R中的一个或多个逻辑运算符。逻辑运算符表达式可以返回TRUE或FALSE。

比如,leadership中经理人的age重新编码为类别型变量agecat(Young、Middle、Elder),如此99的年龄值必须设置为缺失值:leadership$age[leadership$age==99]<-NA

使用以下代码创建agecat变量:(注意使用的是[],而不是())使用within()函数的情况如下:(注意语句的书写方式,首先是创建了agecat变量,并将每一行都设置为缺失值,后面的语句依次执行,写成一行会出错。)

4.4变量的重命名

如果对现有的某些变量名称不满意,你可以交互地或者以编程的方式修改它们。

比如你希望将变量名manager修改为managerID,将date修改为testDate,

001.那么可以使用语句:fix(leadership)来调用一个交互式的编辑器。

编辑后运行的结果如下:

002.或者使用names()函数来重命名变量。

003.又或者如下:

004.可以使用plyr包中的rename()函数,可用于修改变量名。使用代码如下:


4.5缺失值

在R中,缺失值以符号NA(NotAvailable,不可用)表示。R中字符型和数值型数据使用相同的缺失值符号。

is.na()函数可用于检测缺失值是否存在。比如:

x<-c(1,2,3,NA)

is.na(x)

将返回c(FALSE,FALSE,FALSE,TRUE)。

判断leadership中的缺失值:

值得注意的是:第一,缺失值是不可比较的,即便是与缺失值自身的比较。第二,R并不把无限的或者不可能出现的数值标记成缺失值。比如正无穷和负无穷分别用Inf和–Inf所标记。

4.5.1重编码某些值为缺失值

leadership示例中,缺失的年龄值被编码为99,即让R明白示例中的99表示缺失值。

leadership$age[leadership$age==99]<-NA,就是通过重编码完成。即任何等于99的年龄值都将被修改为NA。

4.5.2在分析中排除缺失值

001.使用na.rm=TRUE,先排除缺失值在进行分析工作

002.na.omit()函数可以可以删除所有含有缺失数据的行。如下图:

删除所有含有缺失数据的观测(称为行删除,listwisedeletion)是处理不完整数据集的若干手段之一。

4.6日期值

日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量。as.Date()函数用于执行这种转化。其语法为as.Date(x,"input_format"),其中x是字符型数据,input_format则给出了用于读入日期的适当格式。

应用如下


001.leadership改变日期格式代码

002.Sys.Date()函数可以返回当天的日期,而date()函数则返回当前的日期和时间。

003.使用函数format(x,format="output_format")来输出指定格式的日期值,并且可以提取日期值中的某些部分:

004.使用difftime()函数计算时间间隔等:(那么我是周几出生的呢?TodayisSunday)

4.6.1将日期转换为字符型变

as.character()函数可将日期值转换为字符型:strDates<-as.character(dates)

4.7类型转换

is.datatype()函数返回TRUE或FALSE,而as.datatype()这样的函数则将其参数转换为对应的类型。

举例如下

4.8数据排序

在R中,可以使用order()函数对一个数据框进行排序。默认的排序顺序是升序。加一个减号即为降序。以下示例使用leadership演示了数据框的排序。

001.语句:

newdata<-leadership[order(leadership$age),]#创建了一个新的数据集,其各行依经理人的年龄升序排序。

002.语句:

attach(leadership)

newdata<-leadership[order(gender,age),]#各行依女性到男性、同样性别中按年龄升序排序

detach(leadership)

003.语句:

attach(leadership)

newdata<-leadership[order(gender,-age),]#将各行依经理人的性别和年龄降序排序

detach(leadership)


4.9数据集的合并

4.9.1向数据框添加列

001.使用merge()函数横向合并两个数据框或数据集。

比如:

total<-merge(dataframeA,dataframeBm,by=”ID”)#将两个数据框按照ID进行了合并

total<-merge(dataframeA,dataframeBm,by=c(”ID”,”Country”)#将两个数据框按照ID和Country进行了合并。

002.用cbind()函数进行横向合并,但必须确保每个对象有相同的行数并以相同的顺序排序。

4.9.2向数据框添加行

使用rbind()函数纵向合并两个数据框或数据集。两个数据框必须拥有相同的变量,但它们的顺序不一定要相同。

比如:total<-rbind(dataframeA,dataframeB)

4.10数据集取子集

学习一些对变量和观测进行保留或删除的若干方法。

001.选入(保留)变量。

比如:newdata<-leadership[,c(6:10)]#从leadership数据框中选择了变量q1、q2、q3、q4和q5,并将它们保存到newdata中。将行下标留空(,)表示默认选择所有行。

语句:

myvars<-c(“item1”,”item2”,”item3”,”item4”,”item5”)

newdata<-leadership[myvars]的作用和上面代码实现的结果一样。

002.剔除(丢弃)变量

003.选入或剔除观测是数据分析和数据准备的一个关键方面。

因为“gender“被屏蔽的缘故,执行结果......(原因还在查询中)。

将leadership数据框研究范围限定在2009年1月1日到2009年12月31日之间。

004.subset()函数,更为简便的方法。

004.随机抽样

使用sample()函数能够从数据集中(有放回或无放回地)抽取大小为n的一个随机样本。

从leadership数据集中随机抽取一个大小为3和2的样本:

4.11使用SQL语句操作数据框

SQL——结构化查询语言。

本章总结:

1.使用算术、逻辑运算符进行创建新变量和变量重编码

2.日期转换和缺失值的处理

3.数据的排序、数据集的合并和取子集

4.选入和丢弃变量

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

推荐阅读更多精彩内容