第五天

作者: liuyang2020 | 来源:发表于2021-09-04 16:49 被阅读0次

在数据框中创建新变量

第一种:
mydata<-data.frame(x1=c(2,2,5,3),x2=c(3,4,5,2))创建数据框
mydata$sumx=mydata$x1+mydata$x2在数据框中增加1列(sumx),为x1和x2的和
mydata$meanx=(mydata$x1+mydata$x2)/2在数据框中增加1列,为x1和x2的平均值

第二种
mydata<-transform(mydata,sumx=x1+x2,meanx=(x1+x2)/2) 直接应用transform命令,将新生成变量与原表格合并。

第三种 attach()命令,有博文建议不要用,可能有混淆。

变量的重编码

假设原有数据集data中有一个连续型变量lengthx,现在想将它重编码为字符型变量length(long, medium, short)
variable(condition)<-value该语句是将congdition值时,赋予value。
data$length(data$lengthx>60 & data$lengthx<=95)<-"medium"在数据框中增加一个变量length,将medium定义为60到95。
还可以用within()执行
data<-within(data,(length(lengthx>60 & lengthx<=95)<-"medium")
还有很多可以重编辑变量的函数,car包中的recode(),doBy包中的recodevar(),R中自带cut()。

变量的重命名

fix(variable)可以调用一个交互式编辑器
reshape包中的rename()函数
rename(dataframe,c(oldname="newname",oldname="newname",...
示例:
data<-rename(data,c(oldname1="newname1",oldname2="newname2")

缺失值

is.na()缺失值的确定
na.omit删除所有含有缺失值的观测

类型转换函数

判断 转换
is.numeric() as.numeric()
is.character() as.character()
is.vector() as.vector()
is.matrix() as.matrix()
is.data.frame() as.data.frame()
is.factor() as.factor()
is.logical() as.logical()
示例:
a<-c(3,9,8)
is.numeric(a)
is.vector(a)
a<-as.character(a)
is.numeric(a)
is.vector(a)

添加列

total<-merge(dataframeA,dataframeB,by='ID')
将两个dataframe按照ID进行合并
如果横向合并两个数据框 ,并且不需要公共变量,可用cbind()函数
total<-cbing(dataframeA,dataframeB)
注意:两个对象必须有相同的行数,并且以相同顺序排序。

添加行

纵向合并数据框,使用rbind()函数
total<-rbind(dataframeA,dataframeB
两组数据有相同的变量,如果不同,要么将多余的变量删除,要么为少的增加变量,并设为NA(缺失)

选取数据框子集

newdata<-data[,c(3,9)]选取data的3至9列

subset()函数

datanew<-subset(data,m>=20 | m<12, select=c(k1,k2,k3,k4)选择m大于等于20或小于12的行,保留k1至k4的列。
datanew<-subset(data,name=="Lily" & length>19, select=k1:k4)选择名字为lily,长度大于10的行,保留k1至k4的列。

随机抽样

sample()从数据集中抽取大小为n的随机样本
datanew<-data[sample(1:nrow(data),3,replace=FALSE),]

相关文章

网友评论

      本文标题:第五天

      本文链接:https://www.haomeiwen.com/subject/okllwltx.html