R语言数据集的基本操作(合并,添加行列,提取子集等)

#数据集的基本操作(合并,添加行列,提取子集等)
#数据集的横向合并
#1,使用merge()函数合并数据集
merge(x,y,by,...)
#数据集通过一个或多个共有变量进行联结
#例子,将data.frameA和data.frameB按照ID进行合并
total <- merge(data.frameA,data.frameB, by="ID")
#如果两个数据的共有变量为多个时,将数据框按照ID和Country进行合并
total <- merge(data.frameA,data.frameB, by=c("ID","Country"))

#2,用cbind()进行横向合并
#如果要直接横向合并两个矩阵或数据框,(即简单的把两个数据框并排的放在一起)就不需要指定一个公共索引
#这样可以直接使用cbind()函数
#对于cbind()函数要求每一个对象必须拥有相同的行数,以同顺序排序
#例子
total <- cbind(A,B)
total

#数据集的竖向合并
#要纵向合并两个数据框,可以使用rbind()函数
#两个数据框必须拥有相同的变量,不过它们的顺序不必一定相同。
total <- rbind(data.frameA,data.frameB)
    
#提取数据子集
#1,通过提供行索引,和列索引进行提取子集
#例子,提取6:10列,将行下标留空(,), 默认选择所有的行
newdata <- leadership[, c(6:10)]
newdata
#也可以直接使用6:10
newdata <- leadership[, 6:10]
newdata
#2,如果是选取列的换也可以直接通过列名选择列
myvars <- c("q1","q2","q3","q4","q5")
newdata <- leadership[myvars]
newdata

#剔除变量
#方法一,使用逻辑值向量剔除变量
#names(leadership)生成一个包含所有变量名的字符向量;
names(leadership)
#返回一个逻辑型向量
myvars <- names(leadership) %in% c("q3","q4")
#运算符非(!)将逻辑反转
#leadership[!myvars]选择逻辑值为TRUE的列
newdata <- leadership[!myvars]

#方法二,使用“-”号剔除列
#在某一列的下标之前加一个减号(-)就会剔除那一列
newdata <- leadership[c(-7,-8)]
newdata

#方法三使用NULL删除变量
#将列q3,q4设定为NULL。注意NULL与NA是不同的
leadership$q4 <- leadership$q3 <- NULL
leadership

#选入或剔除行
#1,通过下标选入行
newdata <- leadership[1:3,]
newdata
#2,通过逻辑向量选择行
newdata <- leadership[leadership$gender=="M"&leadership$age > 30]
newdata

#3,subset()函数
#选择所有age大于等于35或age值小于24的行,保留了变量q1到q4
newdata <- subset(leadership, age >= 35 | age <24, select = c(q1,q2,q3,q4))
newdata

newdata <- subset(leadership,gender=="M" & age >25,select = gender:q4)
newdata
#4,随机抽样
#sample()函数能够让你从数据集中(有放回的或无放回的)抽取一个大小为n的样本
#nrow()返回数据框的行数,第一个参数表示要被抽样的向量,3表示从中抽取从要被抽样的向量中随机抽取3个向量,replace=FALSE表示无放回抽样
mysample <- leadership[sample(1:nrow(leadership),3,replace=FALSE),]
mysample

#4,使用sql语句操作数据框
#首先需要下载包"sqldf"
install.packages("sqldf")
library(sqldf)
newdf <- sqldf("select * from leadership where age >35")
newdf
  • 32
    点赞
  • 179
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值