博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用R语言-操作data.frame
阅读量:5327 次
发布时间:2019-06-14

本文共 2601 字,大约阅读时间需要 8 分钟。

1 向一个data.frame指定列插入一列新数据

  1.1 插入一列到指定位置

y<-1:4data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8),x3=c(11,12,13,14),x4=c(15,16,17,18))data2<-cbind(data1[,1:2],y,data1[,3:ncol(data1)])

    插到data1末尾

data2<-cbind(data1,y)

    插到第一列

data2<-cbind(y,data1)

2 向一个data.frame指定行插入一行新数据

  2.1 插入一行到指定位置

data1<- data.frame(x1=runif(10),x2= runif(10),x3= runif(10))row<- c(1, 1, 1)data2<- rbind(data1[1:5,], row, data1[6:nrow(data1), ])

    插入到data1末尾

data2<- rbind(data1, row)

    插入到data1第一行

data2<- rbind(row, data1)

3 给data frame设置列名

colnames(data2) <- c('row1','row3','row3')

4 创建一个空的data frame,并制定列名(方法有点挫,目前还没找到其他方式)

  4.1 创建一个包含一行的,然后用-1取

emptyDF <- data.frame(row1 = c(NA), row2 = c(NA))emptyDF <- emptyDF[-1,]

  4.2 通过matrix创建data frame

emptyDF <- data.frame(matrix(c(NA), byrow = TRUE,dimnames = list(day = c(),condition = c("outlook","temperature","humidity","wind")), nrow=0, ncol=4))

 5 创建一个data frame,并查看

trainSet2 <-data.frame(    size=c("大","小","大","大","小","小"),    weight=c("轻","重","轻","轻","重","轻"),    color=c("红","红","红","绿","红","绿"),    taste=c("good","good","bad","bad","bad","good"))
size weight color taste1   大     轻    红  good2   小     重    红  good3   大     轻    红   bad4   大     轻    绿   bad5   小     重    红   bad6   小     轻    绿  good

6 查看行名

row.names(trainSet2)

7 查看列名

colnames(trainSet2)

8 数据访问

  访问第一行

trainSet2[1,]

  访问第一列

trainSet2[,1]
trainSet2$size
trainSet2[[1]]
trainSet2[["size"]]

访问多行,例如1,2行

trainSet2[1:2,]

  访问多列,例如1,2列

trainSet2[,1:2]
trainSet2[c("size","weight")]

 9 添加新列

trainSet2$newc1 <- c(1,2,3,4,5,6)
trainSet2 <- within(trainSet2,{newc2 <- color})

 10 数据查询

  10.1 根据条件查询

  查询taste为good的所有行

trainSet2[trainSet2$taste == "good",]

  查询taste为good的指定行

trainSet2[trainSet2$taste == "good",1]
trainSet2[trainSet2$taste == "good",1:2]
trainSet2[trainSet2$taste == "good",c("size","color")]

  也可以用which,跟上面的类似

trainSet2[which(trainSet2$taste == "good"),c("size","color")]

  使用subset,会简化查询,可以指定条件,指定选择列

subset(trainSet2,taste == "good" & newc1 < 5,select = c("size","taste"))

11 使用sql查询data frame

  对于熟悉sql的是个福音啊

  11.1 安装sqldf

install.packages('sqldf')

  11.2 引入sqldf

library(sqldf)

  11.3 查询示例

result <- sqldf("select * from trainSet2 where size='大'")

  11.4 链接合并示例,两个表根据newc1 和 fkey进行链接

trainSet3 <- data.frame(fkey = c(1,2,3,4),newc3=c("a","b","c","d"))
resdult <- merge(trainSet2,trainSet3,by.x = "newc1",by.y = "fkey")
newc1 size weight color taste newc2 newc31     1   大     轻    红  good    红     a2     2   小     重    红  good    红     b3     3   大     轻    红   bad    红     c4     4   大     轻    绿   bad    绿     d

 

转载于:https://www.cnblogs.com/liuchangchun/p/4457478.html

你可能感兴趣的文章
重命名流程
查看>>
array 删除指定的元素的方法
查看>>
汇编语言相关图书推荐
查看>>
CBMVC For Titanium Alloy 发布!
查看>>
docker镜像的常用操作
查看>>
CSS3实现的几个小loading效果
查看>>
PROE工程图
查看>>
博客园真好啊!
查看>>
js 绑定数据 实现分页查询
查看>>
磁盘驱动器号的修改恢复
查看>>
Swift 可选(Optionals)类型
查看>>
单表查询
查看>>
Node.js入门:文件查找机制
查看>>
C#连接oracle数据库提示ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
[Luogu] 被污染的河流
查看>>
[LeetCode] Remove Duplicates from Sorted List 移除有序链表中的重复项
查看>>
[LeetCode] Range Sum Query 2D - Immutable 二维区域和检索 - 不可变
查看>>
[CareerCup] 17.1 Swap Number In Place 互换位置
查看>>
[LintCode] Swap Nodes in Pairs 成对交换节点
查看>>
[LintCode] Backpack VI 背包之六
查看>>