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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM