R语言对数据框进行循环处理

最近遇到一个问题,需要对不同分类区域的相关研究指标进行特定的分析,因为涉及分类较多,使用循环赋值语句进行分类,直接上代码:

举例:假设原始数据为由A区-J区的10个分类区域(如图);

第一种方式:循环生成多个list下存放的数据集

library(dplyr)
library(stringr)
###使用filter函数将数据转存到list数据集中###
mc<-mydata$ad%>%table()%>%names()
kk<-list()
for(i in 1:length(mc)){
  kk[[i]]<-filter(mydata,ad==mc[i])
}
names(kk)<-mc
###使用str_detect函数可以实现同样的目的###
kk<-list()
for(i in 1:length(mc)){
  kk[[i]]<-filter(mydata,str_detect(ad,mc[i]))
}
names(kk)<-mc

第二种方式: 循环生成多个数据框结构的数据集(list固然方便,data.frame也可以试试)

###使用assign函数将数据集转存为多个数据框格式###
for(i in 1:length(mc)){
  assign(paste0("area",i),filter(mydata,ad==mc[i]))
}
###使用parse函数和eval函数实现同样的目的###
for(i in 1:length(mc)){
  eval(parse(text=paste0("area",i,"<-filter(mydata,ad==mc[i])")))
}

 注:assign(变量名,value) 将向量/数值/数据框等赋值新变量固然好用;但eval函数用来执行表达式,parse函数用来生成表达式语句,二者结合使用更是YYDS哦~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值