R 基本数据管理

manager<-c(1,2,3,4,5)
date<- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
country<-c("US","US","UK","UK","UK")
gender<-c("M","F","F","M","F")
age<-c(32,45,25,39,99)
q1<-c(5,3,3,3,2)
q2<-c(4,5,5,3,2)
q3<-c(5,2,5,4,1)
q4<-c(5,5,5,NA,2)
q5<-c(5,5,2,NA,1)
leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors=FALSE)

#常用算术操作说明
  # +   加法
  # -   减法
  # *   乘法
  # /   除法
  # ^或** 求幂
  # x%%y  求模
  # x%/%y 整除

#常用比较操作
  # <   小于
  # <=  小于等于
  # >   大于
  # >=  大于等于
  # ==  等于比较
  # !=  不等比较
  # x|y  x或y
  # x&y  x和y
  # isTRUE(X)  测试x是否为TRUE

#操纵日期
  # %d  日期
  # %a  星期
  # %A  星期(非缩写)
  # %m  月份(数字)
  # %b  缩写的月份(英文)
  # %B  月份(非缩写英文)
  # %y  年份
  # %Y  四位年份
  mydate<- as.Date(c("2007-06-22","2004-02-13"))   #字符串转日期对象
  dateStr<- c("2007-06-22","2004-02-13")
  mydate2<- as.Date(dateStr,"%m/%d/%Y")            #字符串转日期对象
  
  Sys.Date()  #获得当前日期
  date()      #获取当前日期和时间

  strD <- as.character(Sys.Date())

#熟悉数据类型的转换
  # is.numeric()                     as.numeric()
  # is.character()                   as.character()
  # is.vector()                      as.vector()
  # is.matrix()                      as.matric()
  # is.data.frame()                  as.data.frame()
  # is.factor()                      as.factor()
  # is.logical()                     as.logical()

#变量的创建和重编码
  
  #创建新变量
    mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
    #method1:
      mydata$sumx<-mydata$x1 + mydata$x2
      mydata$meanx<-(mydata$x1 + mydata$x2)/2
    #method2:
      attach(mydata)
      mydata$sumx<- x1 + x2
      mydata$meanx <- (x1+x2)/2
      detach(mydata)
    #method3:
      mydata <- transform(mydata,sumx=x1+x2,means=(x1 + x2)/2)

    #method4:
      leadership <- within(leadership,{agecat<-NA          #定义新变量,初始化缺省值
                                       agecat[age >75] <- "Elder"   # 设置年龄大于75的值
                                       agecat[age >= 55 & age <= 75] <- "Middle Aged"
                                       agecat[age < 55] <-"Young"
                                       })


  #重编码: 变量重新赋值
    leadership$age[leadership$age == 99] <- NA   #将年龄为99的人员数据置为空
    leadership$age[leadership$age < 30] <- "Younger"   #将年龄小于30的置为yonger
    
  #变量重命名
    #rename(datafarme,c(oldname="newname",oldname="newname",...))
    library(reshape)
    leadership<-rename(leadership,c(manager="managerID",date="testDate")) 
    #也可以
    names(leadership)[2]<-"testData2"
    leadership
    names(leadership)  #查看有哪些变量

#数据集排序、合并、提取
  #排序
      newdata<- leadership[order(leadership$age),]  #排序  默认是升序
      #降序必须这么写
      attach(leadership)
      newdata<-leadership[order(-age),]
      detach(leadership)
  #集合合并
      total <- merge(dataframeA,dataframeB,by=c("ID","xxx"))
      total <- cbind(A,B)  # 直接合并数据库或矩阵
  #提取
      newdata<- leadership[,c(6:10)]
      #或
      myvars <-c("q1","q2")
      newdata <- leadership[myvars]

    
#变量的选入和丢弃
  #选择变量
    myvars<- names(leadership) %in% c("q3","q4")   #找打名字包含 q3\q4的变量
  #变量丢弃
  newdata<- leadership[!myvars]                  #!表示逻辑非
  newdata 
#值的缺失检查
  y<-c(2,3,5,NA)
  is.na(y)  #return :  c(FALSE,FALSE,FALSE,TRUE)
  #NA是不可比较的,即使是同其他缺失值也如此

#计算时缺失值的排除
  x<-c(1,2,NA,3)
  y<-sum(x,na.rm=TRUE)

  #去掉缺失项(整个变量都会去掉)
  leadership  
  newdata<-na.omit(leadership)
  newdata


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值