R语言学习3

##基本数据管理
#创建新变量
mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
mydata$sum<-mydata$x1+mydata$x2
mydata$sum
##或者
attach(mydata)
mydata$sum<-x1+x2
mydata$sum
detach(mydata)
##创建变量的第三种方式
mydata<-transform(mydata,sum=x1+x2)
mydata
##变量的重编码
#创建leadership数据集
manager<-c(1,2,3,4,5)
date<-c("10/24/8","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)
leadership
#将leadership数据集中经理人的连续型年龄变量age重编码为类别型变量
#agecat(Young,Middle age,Elder)
##先处理缺失值,把99的换为NA
leadership$age[leadership$age==99]<-NA
##variable[condition]<-expression用这个语句
leadership$agecat[leadership$age>75]<-"Elder"
leadership$agecat[leadership$age>=55&
                  leadership$age<=75]<-"Middle age"
leadership$agecat[leadership$age<55]<-"Young"
leadership

#变量的重命名用这个函数rename
leadership<-rename(leadership,c(manager="managerID",date="testDate"))
leadership
##或者直接用fix在键盘上输入
fix(leadership)
##用names
names(leadership)[2]<-"testDate"
##缺失值
#检查缺失值
y<-c(1,2,3,NA)
is.na(y)
is.na(leadership[,6:10])
#在分析中排除缺失值
x<-c(1,2,NA,3)
y<-x[1]+x[2]+x[3]+x[4]
z<-sum(x)#x为缺失值,所以yz也是缺失值
#很多数值函数拥有na.rm=TRUE,可以在计算前移除缺失值然后用剩余值计算
x<-c(1,2,NA,3)
y<-sum(x,na.rm=TRUE)
##用na.omit()删除不完整的观测
leadership
newdata<-na.omit(leadership)
newdata
##日期值
#计算天数
startdate<-as.Date("2004-02-13")
enddate<-as.Date("2011-01-22")
days<-enddate-startdate
days
#或者用difftime()计算时间间隔
today<-Sys.Date()
dob<-as.Date("1956-10-12")
difftime(today,dob,units="weeks")
#将日期转换为字符型变量
strdates<-as.character(dates)
##进行转换后,可以用字符处理函数处理数据
##转换数据类型
a<-c(1,2,3)
a
is.numeric(a)
is.vector(a)
##数据排序
newdata<-leadership[order(gender,age),]
newdata
##数据集合并
total<-merge(dataframeA,dataframeB,by="ID")
total<-merge(dataframeA,dataframeB,by=c("ID,country"))
##by是按照方式
##如果直接横向合并两个矩阵或者数据框,可以用cbind()
##如果是纵向合并用rbind()
##选入保留变量
newdata<-leadership[,c(6:10)]#,是默认所有行
##剔除变量
newdata<-subset(leadership,age>=35|age<24,select=c(q1,q2,q3,q4))
newdata<-subset(leadership,gender=="M"&age>25,select=gender:q4)
##随机抽样
mysample<-leadership[sample(1:nrow(leadership),3,replace = FALSE)]

上一篇:Go基础知识梳理(三)


下一篇:Rust结构体打印调试({:?}和{:#?})