函数:将矩形数据转换成面板数据(并生成表头)未完成

法一:transdata <-function(x){y <- as.matrix(x

t1 <- x[,1]    //提取第一列元素

t2 <- colnames(y)[-1]    //提取标题行(去掉第一个) #默认得到列向量

bt <- expand.grid(t1,t2)   //将t1、t2两个列向量拼接在一起 e.g..前18行第一列:为武汉到高速路;第二列全为:Y2002(后每18行变一次年份)

z <- as.vector(y[,-1])   //将矩阵y去掉第一列后的数据按列依次拼接得到一个列向量z. #as.vector不能直接对数据框x使用,故前把数据框变成矩阵

m <- cbind(bt,z)  //将生成的新表头和向量z拼接

n <- fix(m)

return(n)}

dr <- read.csv(file="/Users/harriet/Documents/R语言/xunhuan/gdp.csv")

transdata(dr)


   district Y2002 Y2003 Y2004 Y2005 Y2006   Y2007   Y2008   Y2009   Y2010     Y2011
1    武汉市    NA    NA    NA    NA    NA 3141.90 3960.08 4620.18 5565.93 6756.2000
2    黄石市    NA    NA    NA    NA    NA  466.68  556.57  571.59  690.12  925.9600
3    襄阳市    NA    NA    NA    NA    NA  785.45 1002.46 1201.01 1538.30 2132.2200
4    荆州市    NA    NA    NA    NA    NA  519.63  623.98  709.58  837.10 1043.1200
5    宜昌市    NA    NA    NA    NA    NA  820.90 1026.56 1272.33 1547.32 2140.6900
6    十堰市    NA    NA    NA    NA    NA  411.42  487.64  550.96  736.78  851.2500
7    孝感市    NA    NA    NA    NA    NA  480.79  593.06  672.88  800.67  958.1600
8    荆门市    NA    NA    NA    NA    NA  420.08  520.36  600.10  730.07  942.5900
9    鄂州市    NA    NA    NA    NA    NA  280.71  269.79  323.71  395.29  490.8900
10   黄冈市    NA    NA    NA    NA    NA  473.74  600.75  730.19  862.30 1045.1100
11   咸宁市    NA    NA    NA    NA    NA  286.75  359.19  418.45  520.33  652.1000
12   随州市    NA    NA    NA    NA    NA  257.62  310.20  341.91  401.66  517.9900
13   恩施州    NA    NA    NA    NA    NA  210.35  249.18  294.26  351.13  418.1900
14   仙桃市    NA    NA    NA    NA    NA  190.40  233.50  242.55  290.97  378.4500
15   潜江市    NA    NA    NA    NA    NA  156.63  211.82  234.01  290.67  378.2100
16   天门市    NA    NA    NA    NA    NA  151.48  187.35  186.86  219.48  274.5200
17   林  区    NA    NA    NA    NA    NA    6.96    7.97   10.29   12.30   14.5301
18 高速公路    NA    NA    NA    NA    NA      NA      NA      NA      NA        NA



法二:如果要读入的文件都在一个文件夹中

transdata <- function(filename) {
  dat1 <- read.csv(filename)
  as.vector(as.matrix(dat1[,-1]))
}

setwd("/Users/harriet/Documents/R语言/xunhuan/").   //设置统一的路径,减少重复

Lst <- list()   //生成列表来储存数据
for (i in dir()) Lst[[which(i==dir())]] <- transdata(i).     //将数据依次读入一个list中

a <- sapply(Lst,function(x) x)或a <- sapply(Lst,function(x) x[,3]).      //

dat3 <- cbind(表头,a)














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值