R语言多个for循环嵌套使用

最近在整理本区域历年的人口数据,需要将其整理为SAS程序分析需要的格式。原始人口数据格式如下:原始数据
需转化的格式:
待分析用
发现通过Excel一个一个粘贴转换比较麻烦,于是尝试运用多个for循环嵌套使用提高转换效率,代码如下:

library(dplyr)
library(stringr)
library(readxl)
library(openxlsx)
mydata<-read_excel("population.xls",header=T)
names(mydata)<-c("year","sex","age","pop")
nn<-table(mydata$year)%>%names()
##将原始数据读入list数据集存放##
kk<-list()
for(i in 1:length(nn)){
  kk[[i]]<-filter(mydata,year==nn[i])
}
##创建新数据集列名##
rn<-paste0("F",1:19)
cn<-c("man","woman")

tt<-list()
##在list中创建多个矩阵##
for(i in 1:length(kk)){
  tt[[i]]<-matrix(0,length(rn),length(cn),dimnames = list(rn,cn))
}

###嵌套多个for循环,相当于在每个list条目中不断嵌套新的matrix矩阵数据集###
for(w in 1:length(kk)){
  for(i in 1:length(rn)){
    for(j in 1:2){
      tt[[w]][i,j]<-filter(data.frame(kk[[w]]),sex==j,age==age[i])$pop
    }
  }
}

###循环转置###
ll<-list()
for(i in 1:length(kk)){
  ll[[i]]<-t(tt[[i]])
}

###导出到excel###
names(ll)<-c(paste0("year",2013:2015))
write.xlsx(ll,file="pop_transform.xlsx",rowNames=T)

输出结果:
输出结果

通过多个for循环嵌套使用,能够有效提高数据处理的效率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值