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