首页 > 代码库 > R语言数据框行转列实例
R语言数据框行转列实例
目的:需要把数据框的行列进行转置
方法:
# 原始数据框
> hrl_jd_mon
年份 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月
1 2010年 51.2 45.8 55.8 62.9 63.8 59.5 80.5 78.0 66.0 92.3 50.80 55.6
2 2011年 54.8 54.4 64.1 78.5 64.5 63.4 95.3 89.2 68.8 86.1 51.40 52.4
3 2012年 53.0 46.1 52.8 72.6 49.8 50.1 65.3 64.6 54.4 73.0 39.40 40.5
4 2013年 40.7 43.7 45.1 50.9 40.7 41.1 50.7 54.5 37.8 62.5 30.20 29.6
5 2014年 28.2 34.1 30.3 33.4 31.5 23.5 32.3 33.0 22.5 29.9 3.31 0.0
# 转置过程:
> 月份 <- c("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月")
> data.frame(hrl_jd_mon,row.names=1)
一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月
2010年 51.2 45.8 55.8 62.9 63.8 59.5 80.5 78.0 66.0 92.3 50.80 55.6
2011年 54.8 54.4 64.1 78.5 64.5 63.4 95.3 89.2 68.8 86.1 51.40 52.4
2012年 53.0 46.1 52.8 72.6 49.8 50.1 65.3 64.6 54.4 73.0 39.40 40.5
2013年 40.7 43.7 45.1 50.9 40.7 41.1 50.7 54.5 37.8 62.5 30.20 29.6
2014年 28.2 34.1 30.3 33.4 31.5 23.5 32.3 33.0 22.5 29.9 3.31 0.0
> t1 <- t(data.frame(hrl_jd_mon,row.names=1))
> t1
2010年 2011年 2012年 2013年 2014年
一月 51.2 54.8 53.0 40.7 28.20
二月 45.8 54.4 46.1 43.7 34.10
三月 55.8 64.1 52.8 45.1 30.30
四月 62.9 78.5 72.6 50.9 33.40
五月 63.8 64.5 49.8 40.7 31.50
六月 59.5 63.4 50.1 41.1 23.50
七月 80.5 95.3 65.3 50.7 32.30
八月 78.0 89.2 64.6 54.5 33.00
九月 66.0 68.8 54.4 37.8 22.50
十月 92.3 86.1 73.0 62.5 29.90
十一月 50.8 51.4 39.4 30.2 3.31
十二月 55.6 52.4 40.5 29.6 0.00
> t2 <- as.data.frame(t1,row.names=F)
> t2
2010年 2011年 2012年 2013年 2014年
1 51.2 54.8 53.0 40.7 28.20
2 45.8 54.4 46.1 43.7 34.10
3 55.8 64.1 52.8 45.1 30.30
4 62.9 78.5 72.6 50.9 33.40
5 63.8 64.5 49.8 40.7 31.50
6 59.5 63.4 50.1 41.1 23.50
7 80.5 95.3 65.3 50.7 32.30
8 78.0 89.2 64.6 54.5 33.00
9 66.0 68.8 54.4 37.8 22.50
10 92.3 86.1 73.0 62.5 29.90
11 50.8 51.4 39.4 30.2 3.31
12 55.6 52.4 40.5 29.6 0.00
# 最终成品
> t3 <- as.data.frame(cbind(月份,t2))
> t3
月份 2010年 2011年 2012年 2013年 2014年
1 一月 51.2 54.8 53.0 40.7 28.20
2 二月 45.8 54.4 46.1 43.7 34.10
3 三月 55.8 64.1 52.8 45.1 30.30
4 四月 62.9 78.5 72.6 50.9 33.40
5 五月 63.8 64.5 49.8 40.7 31.50
6 六月 59.5 63.4 50.1 41.1 23.50
7 七月 80.5 95.3 65.3 50.7 32.30
8 八月 78.0 89.2 64.6 54.5 33.00
9 九月 66.0 68.8 54.4 37.8 22.50
10 十月 92.3 86.1 73.0 62.5 29.90
11 十一月 50.8 51.4 39.4 30.2 3.31
12 十二月 55.6 52.4 40.5 29.6 0.00
> str(t3)
‘data.frame‘: 12 obs. of 6 variables:
$ 月份 : Factor w/ 12 levels "八月","二月",..: 12 2 6 10 11 4 5 1 3 9 ...
$ 2010年: num 51.2 45.8 55.8 62.9 63.8 59.5 80.5 78 66 92.3 ...
$ 2011年: num 54.8 54.4 64.1 78.5 64.5 63.4 95.3 89.2 68.8 86.1 ...
$ 2012年: num 53 46.1 52.8 72.6 49.8 50.1 65.3 64.6 54.4 73 ...
$ 2013年: num 40.7 43.7 45.1 50.9 40.7 41.1 50.7 54.5 37.8 62.5 ...
$ 2014年: num 28.2 34.1 30.3 33.4 31.5 23.5 32.3 33 22.5 29.9 ...
原贴地址:http://f.dataguru.cn/forum.php?mod=viewthread&tid=453010&page=1#pid1267442
R语言数据框行转列实例