数据框的操作涉及新建(读取),命名,增加列/行,删除列/行,求值及排序等。
新建/读取数据框
- 新建数据框
student<-data.frame(ID,name,age,...)
- read.table()函数、 read.csv()函数读取一个文本文件,返回的是一个Data Frame对象。读取数据库也是返回Data Frame对象。
数据框的命名
- 查看数据框的行名及列名
names()函数可以查看列名,row.names()函数查看列名
row.names(dataframe)<-student$ID
- 重命名数据框的列的三种方式:
1.使用fix(data)函数,调用一个交互式的编辑器。然后单击变量名,然后在弹出的对话框中将其重命名;
2.names()函数重命名;
3.plyr包中有一个rename()函数,可用于修改变量名。
例如:
names(cgroup)[1]<-"sample" ##修改第一列的变量名
names(cgroup)[2]<-"group" ##修改第二列的变量名
##载入plyr包
library(plyr)
cgroup<-rename(cgroup,c(sample="sampleID")) ##单个变量更名也需加c()函数
访问元素
- 与Matrix一样,使用[行Index,列Index]的格式可以访问具体的元素。使用列名可以选取要访问的哪些列。
- 使用attach()和detach()函数可以使得访问列时不需要总是跟着变量名在前面。
- with()函数表示括号内的操作只针对括号内的数据进行:
with(dataframe,{
n<-Name
print(n)
})
增加新列/删除列
- 如向student的数据框例添加年龄列(需根据出生日期计算,这里需要用到Sys.Date()函数获取当前日期,再用format()函数获取年份):
student$Age<-as.integer(format(Sys.Date(),"%Y"))-as.integer(format(student$Birthdate,"%Y”))
用within()函数简化为:
student<-within(student,{
Age<-as.integer(format(Sys.Date(),"%Y"))-as.integer(format(Birthdate,"%Y"))
})
- 删除列
行或列的下标前加“-”。或者用dataframe$columnname
dataframe[-a,-b] ##删除a行b列
查询子集
简单的是使用subset()函数。如查询student数据内女性且小于30岁的子集:
subset(student,Gender=="F" & Age<30 ,select=c("Name","Age"))
合并/连接
- 列合并
对多个Data Frame进行连接需要使用merge函数。
result<-merge(student,score,by.x="ID",by.y="SID") ##对student及score数据框按照ID及SID(ID及SID相同)进行合并
- 行合并
rbind()函数进行行合并,此时要求两个数据框必须有相同的列名。
rbind(dataframe1,dataframe2)
待进一步更新......
参考网址
博客园深蓝居
网友评论