#创建leadership数据框
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")#性别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)#NA缺失值
q5<-c(5,5,2,NA,1)
leadership<-data.frame(manager,date,country,gender,age,
q1,q2,q3,q4,q5,stringsAsFactors = FALSE)
#data.frame数据框
leadership
dim(leadership)#显示他的维度(获取它的维数,五行十列)
leadership[2]#选择第二列
leadership[,2]#选择所有行第二列
leadership[2,]#选择第二行所有列
#创建新变量
#第一种方式
mydata<-data.frame(x1=c(2,2,6,4),
x2=c(3,4,2,8))
mydata$sumx<-mydata$x1+mydata$x2
#mydata$sumx就是一个名称
mydata$meanx<-(mydata$x1+mydata$x2)/2#求均值
mydata
#第二种方式
attach(mydata)#有attach就不用加$简化的作用
mydata$sumx<-x1+x2
mydata$meanx<-(x1+x2)/2
detach(mydata)
mydata
#第三种方式
#transform第一个原始数据框,第二、三个是加的变量
mydata<-transform(mydata,
sumx=x1+x2,
meanx=(x1+x2)/2)
mydata
#变量的重编码
leadership$agecat[leadership$age>75]<-"Elder"
leadership$agecat[leadership$age>=55&
leadership$age<=75]<-"Middle Aged"
leadership$agecat[leadership$age<55]<-"Young"
leadership
#用函数重新编码within#更紧凑型
leadership<-within(leadership,{
agecat<-NA #刚开始是缺失值
agecat[age>75]<-"Elder"
agecat[age>=55&age<=75]<-"Middle Aged"
agecat[age<55]<-"Young" })
leadership
#变量的重命名
#方法一
names(leadership)
names(leadership)[2]<-"testDate"#把date第二列名字改为testdate
leadership
#方法二rename重命名
library(plyr)
leadership<-rename(leadership,
c(manager="managerID",date="textdate"))
leadership
#缺失值 函数is.na 返回逻辑向量TRUE/FALSE
is.na(leadership[,6:10])#选leadership第六到十列
#重新编码某些值为缺失值
leadership$age[leadership$age==99]<-NA#选择age所在列中年龄为99变为缺失值
#在分析中排除缺失值
#第一种方法
x<-c(1,2,NA,3)
y<-x[1]+x[2]+x[3]+x[4]
z<-sum(x)
z
#第二种方法
x<-c(1,2,NA,3)
y<-sum(x,na.rm=TRUE)
y
#使用函数na.omit()删除不完整的观测即NA
leadership
newdata<-na.omit(leadership)#把含有缺失值的样本去掉,在这里是删除第四个样本
newdata
letters
#[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u"
#[22] "v" "w" "x" "y" "z"
letters[3]#返回”c“加引号是字符
#日期值函数as.Date()格式要清楚
mydates<-as.Date(c("2007-06-22","2004-02-13"))
#本来日期是字符串,现在强制把它作为日期
mydates
strDates<-c("01/05/1965","08/16/1975")#字符串形式的向量
dates<-as.Date(strDates,"%m/%d/%Y")#月日年
strDates
Sys.Date()
date()
today<-Sys.Date()#获取当前的时间
format(today,format="%B %d %Y")#显示年月日
format(today,format="%A")#显示具体的日期