最近在整理本区域历年的人口数据,需要将其整理为SAS程序分析需要的格式。原始人口数据格式如下:
需转化的格式:
发现通过Excel一个一个粘贴转换比较麻烦,于是尝试运用多个for循环嵌套使用提高转换效率,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41library(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循环嵌套使用,能够有效提高数据处理的效率。
最后
以上就是调皮舞蹈最近收集整理的关于R语言多个for循环嵌套使用的全部内容,更多相关R语言多个for循环嵌套使用内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复