数据是一件麻烦事,一件非常麻烦麻烦的事
上一回,我们主要对数据结构的类型进行了解,同时也提及了不同数据的导入方式。面对一个新建数据集,我们需要对其进行管理以满足实际分析的要求。本次学习,主要涉及一些基本数据管理知识。
创建新变量
基本语句:变量名 <- Formula
#常见的算术运算符
+ 加
- 减
* 乘
/ 除
^或** 求幂
x%%y 求余(x mod y)。5%%2的结果为1
x%/%y 整数除法。5%/%2的结果为2
若要新建变量(求和),并整合到原始数据集,可采用transform()
函数
jay <- data.frame(x1= c(1,2,3),x2= c(2,3,4))
jay <- transform( jay,sumx= x1+x2)
变量的重编码 实际工作中,你可能会面对以下情景:
- 将连续型变量修改为类别值;
- 将误编码的值替换为正确值;
- 基于一组分数线创建一个表示及格/不及格的变量
此时多采用逻辑运算符表达式。
#常见的逻辑运算符
< 小于
<= 小于或等于
> 大于
>= 大于或等于
== 严格等于*
!= 不等于
!x 非x
x | y x或y
x & y X和y
isTRUE(x) 测试x是否为TRUE
variable[condition] <- expression
将仅在condition的值为TRUE时执行赋值。
jay$x3[jay$x1==2]<-4
变量的重命名
data<-edit(data)
fix(data)
rename()
rename(dataframe,c(oldnames="newname",oldnames="newname",...)
names(data)[1]<-"Test"
缺失值
缺失值以符号NA(Not Available,不可用)表示。is.na()
允许你检测缺失值是否存在。
重编码某些值为缺失值
在分析中排除缺失值
多数的数值函数都有na.rm=TRUE
选项,可在计算前移除缺失值并使用剩余值进行计算。na.omit()
可以删除所有含有缺失数据的行。
日期值
as.Date(x,"input_format")
#日期格式
%d 数字表示的日期(0~31) 01~31
%a 缩写的星期名 Mon
%A 非缩写星期名 Monday
%m 月份(00~12) 00~12
%b 缩写的月份 Jan
%B 非缩写月份 January
%y 两位数的年份 07
%Y 四位数的年份 2007
-使用函数
format(x,format="output_format")
来输出指定格式的日期值,并且可以提取日期值中的某些部分
-使用函数difftime()
来计算时间间隔
类型转换
通过判断数据的类型或者将其转换为指定类型,满足后续分析。
#类型转换函数
判断 转 换
is.numeric() as.numeric()
is.character() as.character()
is.vector() as.vector()
is.matrix() as.matrix()
is.data.frame() as.data.frame()
is.factor() as.factor()
is.logical() as.logical()
数据排序
order()
函数对一个数据框进行排序,默认为升序。
数据集的合并
添加列
- 横向合并两个数据框(数据集),使用
merge()
函数。
merge(dataframeA,dataframeB,by="ID")
- 若直接横向合并,且不需要指定公共索引,可直接使用
cbind()
函数。注意每个对象要有相同的行数,且以相同顺序排序。
添加行
使用rbind()
函数,两个数据框必须拥有相同的变量。
数据集取子集
选入(保留)变量
数据框中的元素可通过dataframe[row indices, column indices]
进行访问。例如data <-mydata[,c(4:5)]
剔除(丢弃)变量
data<-mydata[c(-1,-2)]
#舍弃第1、第2个变量
同样,data<-mydata$1<-mydata$2<-NULL
选入观测
which()
函数可返回向量下标
subset()函数
选择变量和观测最简单的方法
随机抽样
sample()
函数