在这里插入代码片
R语言学习笔记-第四章基本数据管理(3.2)
—参考《R语言实战》
目录
1:创建新变量 //数据框加上一列
2:变量的重编码 //修改变量数据大小、连续性变量修改为类型变量
3:变量重命名 //fix()函数完成
4:缺失值:判断,修改,排除
5:日期值 //日期值转化方法、日期差计算
6:排序 //数据结构排序方法
7:数据集的合并 //横向、纵向合并数据集
8:数据集取子集 //subset()函数一步完成
manager <-c(1,2,3,4,5)
date1 <- 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,date1,country,gender,age,q1,q2,q3,q4,q5,stringsAsFactors = FALSE)
1:创键新变量
①transform()函数 and 直接修改法
mydata <-data.frame(x1=c(3,2,6,4),x2=c(3,4,2,8))
mydata s u m x < − m y d a t a sumx <-mydata sumx<−mydatax1+mydata$x2mydata <-transform(mydata,
meanx <-sumx/2)
2:变量重编码
①:修改变量数据
#指定某数据结构某变量的某一符合条件元素修改
leadership a g e [ l e a d e r s h i p age[leadership age[leadershipage==99] <-NA
②:变量重命名(使用within函数)
leadership <-within(leadership,{
agecat <-NA
agecat[age>75] <-“Elder” #不用再指定数据对象是谁
agecat[age<=75&age>=55] <-“Middle Age”
agecat[age<55] <-“Young” })
3:变量重命名
①:使用fix()交互修改变量名(以及其它数据)
fix(leadership)
此处仅仅学习了fix()交互修改方法,fix()函数对多种数据结构都具有修改的交互功能
4:缺失值
①:缺失值的排除
在计算过程中,由于数据的统计问题可能会出现缺失值导致计算报错。可以使用na.rm or na.omit=TRUE 自动忽略掉NA或NA所在行
x1 <-c(1,2,NA,3)
sum(x1)
[1] NA
sum(x1,na.rm=TRUE)
[1] 6
sum(x1,na.omit=TRUE)
[1] NA
5:日期值
(1)常见的日期格式
%d:数字表示日期00-30 %m:月份 00-12
%a:缩写星期名 %A:星期名 %b:缩写月名 %B:月名
%y:两位数年份 %Y:四位数年份
(2)as.Date(data,formate)函数
myformat<-"%m/%d/%y"
leadership d a t e < − a s . D a t e ( l e a d e r s h i p date<-as.Date(leadership date<−as.Date(leadershipdate,myformat)
#千万注意 日期格式应与日期所述形式相同
6:排序
①:[order(),]函数
attach(leadership)
newdata <-leadership[order(gender,-age),] #注意[order(),]有","
newdata #默认升序排列,在所指变量前加上-即可实现降序排列
detach(leadership)
7:数据集的合并
①:cbind()横向合并
p1 <-data.frame(age)
p2 <-data.frame(q1)
p1 <-cbind(p1,p2) #增加列“变量个数”
p1
age q1
1 32 5
2 45 3
3 25 3
4 39 3
5 99 2
②:rbind()纵向合并
p3 <-data.frame(age,q1)
p1 <-rbind(p1,p3) #增加行数数据
p1
age q1
1 32 5
2 45 3
3 25 3
4 39 3
5 99 2
6 32 5
7 45 3
8 25 3
9 39 3
10 99 2
(注意:纵向合并需要数据集变量个数相同,否则需要删除或者选取)
8:数据集的删除选取
①此处仅仅学习subset()函数来筛选子集
②:subset(data, request , select=c())
newdata <-subset(leadership,select=c(q1,q2,gender,age))
newdata
q1 q2 gender age
1 5 4 M 32
2 3 5 F 45
3 3 5 F 25
4 3 3 M 39
5 2 2 F 98
newdata <-subset(leadership,age>32)
newdata
managerID testdata country gender age q1 q2 q3 q4 q5 agecat
2 2 2020-01-21 US F 45 3 5 2 5 5 Young
4 4 2020-01-23 UK M 39 3 3 4 3 3 Young
5 5 2020-01-24 UK F 98 2 2 1 2 1 Elder