R语言数据框行转列实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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语言数据框行转列实例的主要内容,如果未能解决你的问题,请参考以下文章

oracle行转列sql怎么写?

游标实例行转列

Oracle数据 行转列

MySQL行转列与列转行

oracle 行转列,用特殊符号拼接

SQL 行转列