R教材3 数据管理

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

猜你喜欢

转载自blog.csdn.net/u013103305/article/details/83409543