- 根据原对象创建新变量,对象=transform(对象,新变量)
- 变量的重编码variable[condition]<-expression,变量的下标运算符设置条件,当condition为T时则执行赋值;within(对象,{新变量[原变量的判断条件]=新值}),创建新对象,{}内为执行语句
- cut(列对象,breaks=quantile(列对象,probs=c(0.0,0.3,0.7,1.0)),include.lowest = T),include.lowest是否包含最小值,数值变量离散化且转化为因子
- 变量的重命名names(对象)[]<-新命名,names通过下标运算符找到属性名并修改
- fix方法最直接
- plyr包中的rename(dataframe,c(oldname="newname",……))
- 缺失值处理:NA缺失值、NaN异常值、Inf、-Inf正负无穷大;R中字符型和数值型数据使用的缺失值符号是相同的,这与SAS等程序不同;缺失值无法比较
- 识别缺失数据
- 先把异常值重编码为缺失值,is.nan()
- is.na检验每个数据是否为缺失值,返回相同大小的T和F的对象、complete.case检验每个观测(行)是否为缺失值
- *mice包中的pattern方法:md.pattern()按行列合计缺失值信息
- *图象方法:VIM包中的aggr(数据,prop=F,number=TRUE)、matrixplot()
- 处理缺失值
- 确定缺失值是否有业务含义
- 删除
- 行删除,直接清理文件(可能只使用到完整列),na.omit()
- 配对删除,文件数据使用到时有缺失值才删除行,cor(sleep,use="pairwise.complete.obs")求相关系数,自动去除有缺失值的记录
- 替换mean(x,na.rm=T),去除NA再计算;根据数据的分布,正态分布可用均值代替,偏态可用中位数代替,或者属性之间的联系可以用回归推断缺失值
- 识别缺失数据
- 日期值as.Date(对象,“读入的格式”),日期值一般以字符串形式传入R中,要转化为日期变量
- format(对象,format=“”)对日期对象修改其格式(其他对象也可以)
- difftime(,,units="weeks")计算日期间隔,以周为单位
- *这里用到的是as.数据类型(),显式转换
- 类型转换
- 判断is.数据类型()
- 显式转换as.数据类型()
- 隐式转换c(1,T,'abc'),直接都转换为character
- factor()转换为因子
- 数据排序,对象[order(排序属性)],在排序属性前加-使其降序
- 数据集合并
- 添加列merge(dataframe1,dataframe2,by=“连接属性”,all.x=T),即inner join,内联接;即vlookup
- cbind(),列联合,必须有相同的行数和排序
- 添加行rbind(),必须有相同的变量,顺序不必一样
- 提取子集
- 保留变量,下标运算符选择列[]
- 丢弃变量
- 下标运算符[!names(数据框) %in% c(列名)]、[c(-8,-9)]去除8和9列
- 列<-NULL,,这里的NULL和NA是不同的
- 选择行,对象[条件,]
- 最简单的选择subset(对象,属性条件,select=),过滤出对象,其属性条件,select特定列
- 随机抽样
- sample(1:nrow(airquality),size=10,replace=T),返回行号,nrow()计算行数,size抽取数,replace是否放回;dataframe[sample(),]
- set.seed,为伪随机数设置种子
- 利用SQL语句sqldf包中的sqldf()
- sqldf("sql语句",row.names=T),保留行名
R教材3 数据管理
最新推荐文章于 2024-09-08 17:36:00 发布