全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3588 1
2016-10-12
想用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的整理后结果?

二维码

扫码加我 拉你入群

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

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

全部回复
2016-10-12 15:27:24
你的A应该是一个dataframe,把它转成matrix就可以了
PS:如果不是啥需要保密的东西的话,建议下次把代码或者R文件一起发上来
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群