楼主: 霓灯
3167 1

[问答] R语言,数据框(矩阵)-列重新排序 [推广有奖]

  • 0关注
  • 0粉丝

初中生

66%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
99 点
帖子
9
精华
0
在线时间
11 小时
注册时间
2015-3-18
最后登录
2016-12-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想用R语言重新排列一批csv文件的列数据,使其具有相同的列(没有的列补充为0值)以及列顺序(都按照一个顺序输出),其中两个文件的例子如下:
A
        a        b        c        d        e        f        g
r1        0        0        0        0        0        0        0
r2        0        0        0        0        0        0        0
r3        13972        72        6548        100        6644        192        0
r4        7360        128        3724        64        3252        128        0
r5        3860        140        2164        0        1300        64        32
r6        2000        100        872        0        992        0        32
r7        1232        80        484        0        596        40        0
r8        848        104        272        32        344        32        32
r9        600        68        312        32        156        0        0

B
        c        e        a        d        m
r1        0        0        0        0        0
r2        0        0        0        0        0
r3        32        320        0        0        0
r4        32        32        0        0        0
r5        32        128        0        0        0
r6        0        4        0        0        0
r7        0        32        0        0        0
r8        0        32        0        0        0
r9        0        32        0        0        0

最终想得到的结果是:
A
        a        b        c        d        e        f        g        m       
r1        0        0        0        0        0        0        0        0
r2        0        0        0        0        0        0        0        0
r3        13972        72        6548        100        6644        192        0        0
r4        7360        128        3724        64        3252        128        0        0
r5        3860        140        2164        0        1300        64        32        0
r6        2000        100        872        0        992        0        32        0
r7        1232        80        484        0        596        40        0        0
r8        848        104        272        32        344        32        32        0
r9        600        68        312        32        156        0        0        0

B
        a        b        c        d        e        f        g        m       
r1        0        0        0        0        0        0        0        0
r2        0        0        0        0        0        0        0        0
r3        0        0        32        0        100        0        0        0
r4        0        0        32        0        32        0        0        0
r5        0        0        32        0        128        0        0        0
r6        0        0        0        0        4        0        0        0
r7        0        0        0        0        32        0        0        0
r8        0        0        0        0        32        0        0        0
r9        0        0        0        0        32        0        0        0

我读入数据后,按照下面的方法进行了处理:
> A
       a   b    c   d    e   f  g m
r1     0   0    0   0    0   0  0 0
r2     0   0    0   0    0   0  0 0
r3 13972  72 6548 100 6644 192  0 0
r4  7360 128 3724  64 3252 128  0 0
r5  3860 140 2164   0 1300  64 32 0
r6  2000 100  872   0  992   0 32 0
r7  1232  80  484   0  596  40  0 0
r8   848 104  272  32  344  32 32 0
r9   600  68  312  32  156   0  0 0

> B(略)

> n = union(colnames(A),colnames(B))
> m1 = matrix(0,9,length(n), dimnames = list(rownames(A),n))
> head(m1)
   a b c d e f g m
r1 0 0 0 0 0 0 0 0
r2 0 0 0 0 0 0 0 0
r3 0 0 0 0 0 0 0 0
> m1[,colnames(A)] = A
> m1
[[1]]
[1]     0     0 13972  7360  3860  2000  1232   848   600

[[2]]
[1]   0   0  72 128 140 100  80 104  68

[[3]]
[1]    0    0 6548 3724 2164  872  484  272  312  略略。。。。。。

最后m1得出了 貌似是嵌套的结果,我想问下,这个程序的写法有什么不对吗?为什么没有得到上面想要的A的整理后结果?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 数据框 length matrix Names

沙发
千5320 发表于 2016-10-12 15:27:24 |只看作者 |坛友微信交流群
你的A应该是一个dataframe,把它转成matrix就可以了
PS:如果不是啥需要保密的东西的话,建议下次把代码或者R文件一起发上来

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-6 15:38