R-基本数据管理-ch4
1、创建新变量
新变量<-表达式,表达式中会涉及到算数运算符,+-*/^
2、变量的重编码
对满足条件的赋值:语句variable[condition] <- expression将仅在condition的值为TRUE时执行赋值。
在此用到函数within(),与函数with()类似(见2.2.4节),不同的是它允许你修改数据框。
3、变量的重命名
有三种方法:
(1)用函数fix(数据框)调用一个交互式编辑器,单击变量名修改
(2)使用reshape包中有一个rename()函数,可用于修改变量名。rename()函数的使用格式为
(3)通过names()函数来重命名变量。例如:
4、缺失值
缺失值以符号NA(Not Available,不可用)表示;
不可能出现的值(例如,被0除的结果)通过符号NaN(Not a Number,非数值)来表示。
函数is.na()用于检测缺失值是否存在。is.na()函数作用于一个对象上,则它返回一个相同大小的对象,如果某个元素是缺失值,相应的位置将被改写为TRUE,不是缺失值的位置则为FALSE。
注:缺失值被认为是不可比较的,即便是与缺失值自身的比较。这意味着无法使用比较运算符来检测缺失值是否存在。例如,逻辑测试myvar == NA的结果永远不会为TRUE。
(1)重编码某些值为缺失值:
(2)在分析中排除缺失值:
方法一:在使用函数处理不完整的数据时,请务必查阅它们的帮助文档(例如,help(sum)),检查这些函数是如何处理缺失数据的。好在多数的数值函数都拥有一个na.rm=TRUE选项,可以在计算之前移除缺失值并使用剩余值进行计算。如:
方法二:通过函数na.omit()移除所有含有缺失值的观测,该函数可以删除所有含有缺失数据的行。
方法三:第15章中探索若干更为复杂精妙的缺失值处理方法。
5、日期值
日期值通常以字符串的形式输入到R中,然后转化为以数值形式存储的日期变量:
函数as.Date()用于执行这种转化,其语法为as.Date("x", "input_format"),其中x是字符型数据,input_format则给出了用于读入日期的适当格式,其的默认输入格式为yyyy-mm-dd。
函数Sys.Date()返回当天的日期;
函数date()返回当前的日期和时间;
函数format(x, format="output_format")用来输出指定格式的日期值,并且可以提取日期值中的某些部分(月、周、星期等)。该函数接受一个参数x并按某种个数输出结果。
函数difftime()用来计算时间间隔。日期值可以执行算数运算的原因是R存储的日期是用自1970年1月1日以来的天数表示的。
例子:如何把日期为yyyy-mm-dd格式转化为mm/dd/yy
首先把输入的字符型日期转化为数值型日期,然后再用format()函数
(1)将日期转换为字符型变量
不太常用。使用函数as.character()
(2)更进一步
进行复杂的日期和时间处理,可使用lubridate包。了解更多日期的细节可以查看?as.date ?strftime ?ISOdatetime
6、类型转换
7、数据排序
使用order()函数对一个数据框进行排序。默认的排序顺序是升序,在排序变量的前边加一个减号即可得到降序的排序结果。
8、数据集的合并
向数据框中添加列(变量)和行(观测)
(1)添加列
merge()函数在多数情况下,两个数据框是通过一个或多个共有变量进行联结的(即一种内联结,inner join)。横向联结通常用于向数据框中添加变量,格式为:
(2)添加行
rbind()函数
例子:
9、数据集取子集
(1)选入(保留)变量
以下例子是针对数据框的子集选取:
(2)剔除(丢弃)变量
方法一:
方法二:
(3)选入观测
从数据框total2中选出年龄大于20且是女性的观测值:
拆分看
(4)subset()函数
以上(1)-(3)的方法都可以用subset()函数代替,例子如下:
筛选出年龄大于20的女性,保留变量gender和sale。
(5)随机抽样
更全和复杂的抽样工具是sampling包和survey包
10、使用SQL语句操作数据框