想用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的整理后结果?