自学笔记6数据框
继续学习数据框。下面学习数据框的基本操作。
先来创建下面数据框操作需要用到的矩阵和数据框
b3-matrix(1:15,3,5)#构建矩阵b3,1到15的数值,3行,5列。b3#显示b3。
##[,1][,2][,3][,4][,5]##[1,]##[2,]##[3,]
name-c("one","two","three","four","five","six","seven","eight")#构建字符型向量name。factor-c("a","b","a","b","a","b","a","b")values-c(1,2,3,4,5,6,7,8)#构建数值型向量values。values2-c(8,7,6,5,4,3,2,1)#构建数值型向量values2。A-data.frame(name,factor,values,values2,row.names=c("r1","r2","r3","r4","r5","r6","r7","r8"))#创建数据框A。A#显示结果A。
##namefactorvaluesvalues2##r1onea18##r2twob27##r3threea36##r4fourb45##r5fivea54##r6sixb63##r7sevena72##r8eightb81
str(A)#查看数据结构
##data.frame:8obs.of4variables:##$name:chr"one""two""three""four"...##$factor:chr"a""b""a""b"...##$values:num##$values2:num.数据框操作
is.data.frame(A)#is.data.frame()用于判定数据是否是数据框。若是,返回值为TURE,不是,返回FALSE。
##[1]TRUE
b3-as.data.frame(b3)#as.data.frame()用于将数据转换为数据框。这里将矩阵b3转为数据框。b3#显示结果。
##V1V2V3V4V5##1##2##3
colnames(b3)[3]-"value"#修改数据框b3第3列列名为value。要修改行名用rownames(A)[行号,列号]-“新名称”。b3#显示结果。
##V1V2valueV4V5##1##2##3
colnames(b3)-c("列1","列2","列3","列4","列5")#对数据框b3的所有列重命名。b3#显示结果。
##列1列2列3列4列5##1##2##3
A#显示数据框A。
##namefactorvaluesvalues2##r1onea18##r2twob27##r3threea36##r4fourb45##r5fivea54##r6sixb63##r7sevena72##r8eightb81
t(A)#数据框转置。
##r1r2r3r4r5r6r7r8##name"one""two""three""four""five""six""seven""eight"##factor"a""b""a""b""a""b""a""b"##values"1""2""3""4""5""6""7""8"##values2"8""7""6""5""4""3""2""1"
A[1,]-c(1,1,1,1)#修改数据框A第1行的数据。A#显示结果A。
##namefactorvaluesvalues2##r##r2twob27##r3threea36##r4fourb45##r5fivea54##r6sixb63##r7sevena72##r8eightb81
A[,2]-c(2,4,6,8,10,12,14,16)#修改数据框A第2列的数据。A#显示结果A。
##namefactorvaluesvalues2##r##r2two##r3three##r4four##r5five##r6six##r7seven##r8eight
A[1,1]-"one"#修改第1列第1行的值。A#显示结果A。
##namefactorvaluesvalues2##r1one##r2two##r3three##r4four##r5five##r6six##r7seven##r8eight
A$values-as.character(A$values)#将数据框A中values列类型从数值型改为字符型。class(A$values)#查看结果。
##[1]"character"
A$values-as.numeric(A$values)#从字符型转换会数值型。class(A$values)#查看结果。
##[1]"numeric"
A[9,]-c("nine","a",18,0)#给数据框A增加第9行。A#显示结果。
##namefactorvaluesvalues2##r1one##r2two##r3three##r4four##r5five##r6six##r7seven##r8eight##9ninea
A[,4]-c(1,3,5,7,9,11,13,15,17)#增加新列。A#显示结果。
##namefactorvaluesvalues2##r1one##r2two##r3three##r4four##r5five##r6six##r7seven##r8eight5##9ninea
A$values1-c(1,1,2,2,3,3,4,4,5)#增加新列,列名为values1。A#显示结果。
##namefactorvaluesvalues2values1##r1one1##r2two1##r3three2##r4four2##r5five3##r6six3##r7seven4##r8eight54##9ninea5
A-data.frame(A,values3=c("a","b","a","b","a","b","a","b","a"))#在原有数据框的基础上使用data.frame()函数新增列。A#显示结果。
##namefactorvaluesvalues2values1values3##r1one1a##r2two1b##r3three2a##r4four2b##r5five3a##r6six3b##r7seven4a##r8eight54b##9ninea5a
A-A[-9,]#删除第9行。A#显示结果。
##namefactorvaluesvalues2values1values3##r1one1a##r2two1b##r3three2a##r4four2b##r5five3a##r6six3b##r7seven4a##r8eight54b
A-A[,-4]#删除第4列数据。A#显示结果。
##namefactorvaluesvalues1values3##r1onea##r2twob##r3threea##r4fourb##r5fivea##r6sixb##r7sevena##r8eightb5.数据框排序
A[order(A$values1),]#数据框排序,按照values1进行,order函数默认是升序。
##namefactorvaluesvalues1values3##r1onea##r2twob##r3threea##r4fourb##r5fivea##r6sixb##r7sevena##r8eightb
A[order(-A$values1),]#对数据框A以values1变量降序排列。
##namefactorvaluesvalues1values3##r7sevena##r8eightb##r5fivea##r6sixb##r3threea##r4fourb##r1onea##r2twob
A[order(A$name,decreasing=T),]#当排序依据变量为数值型时,前面加-就是按照降序排列,但是当变量为字符型时,就需在order函数中指定参数decreasing,T为TRUE,即降序。本例中为英文字母,所以降序按照英文字母首字母排序。
##namefactorvaluesvalues1values3##r2twob##r3threea##r6sixb##r7sevena##r1onea##r4fourb##r5fivea##r8eightb
A[order(A$values,-A$values1),]#以values升序排列,以values1为降序排列。
##namefactorvaluesvalues1values3##r1onea##r2twob##r3threea##r4fourb##r5fivea##r6sixb##r7sevena##r8eightb
sort(A$values3)#也可以用sort()函数进行排序。使用方法与order基本相同。
##[1]"a""a""a""a""b""b""b""b"
参考资料:
R语言数据排序,
|