R语言 frame日常操作

frame简直是R中神一般的存在,翻译为数据框架,和矩阵很像,但绝对比矩阵更加强大, frame可以各种数据类型杂交,简直太方便了。下面介绍下简单的操作,因为。。。更深的操作我也不会,真的要靠日常积累吧。

创建frame

最基础的,一行一行创建,这个确实有点点傻,不过做生信的宝宝,谁会自己建表呢,都是生成的数据,简单测试而已。

 student<-data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"))
 #查看一下
 student

一些基本信息查看

> student
  ID   Name
1 11  Devin
2 12 Edward
3 13  Wenli

查看列名:

> row.names(student)
[1] "1" "2" "3"

查看行名:

> colnames(student)
[1] "ID"   "Name"

#增加列
student$sex=c("b","g","b")

#增加行(新建一个表,把俩表绑定在一起,rbind是行绑定)
newstudent=data.frame(ID=c(14),Name=c("Peter"),sex=c("b"))
student=rbind(student,newstudent)

#删除最后一行(本来有4行,取前三行,赋值给原表)
student=student[1:3,]

两个表之间的合作

新建一个表:

home<-data.frame(ID=c(11,1,2),no=c(111,122,133))

#查找student表中是否有home表的学生(ID来区分)
sh=student[which(student$ID%in%home$ID),]
#或者按照列来匹配,student第一列和home第一列是否有交叉,有的话输出student信息
sh=student[which(student$ID%in%home[1,]),]

#两个表合并,按照ID合并
 result=merge(student,home,by.x = "ID")
 result
 ID  Name sex  no
1 11 Devin   b 111

查询子集

查询一个Date Frame,返回一个满足条件的子集,这相当于数据库中的表查询,是非常常见的操作。使用行和列的Index来获取子集是最简单的方法,前面已经提到过。如果我们使用布尔向量,配合which函数,可以实现对行的过滤。比如我们要查询所有Gender为F的数据,那么我们首先对student$Gender==“F”,得到一个布尔向量:FALSE FALSE  TRUE,然后使用which函数可以将布尔向量中TRUE的Index返回,所以我们的完整查询语句就是:

student[which(student$Gender=="F"),]

注意这里列Index并没有输入,如果我们只想知道所有女生的年龄,那么可以改为:

student[which(student$Gender=="F"),"Age”]

这样的查询写法还是复杂了点,可以直接使用subset函数,那么查询会简单些,比如我们把查询条件改为年龄<30的女性,查姓名和年龄,那么查询语句为:

subset(student,Gender=="F" & Age<30 ,select=c("Name","Age"))

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值