首页 > 解决方案 > 如何在不重复列的情况下创建数据框

问题描述

我有 5 个包含相同列 ABC 的表(列名相同)

我想创建一个数据框,在其中合并所有五个表,我尝试了命令

My_Data <- data.frame(T1,T2,T3,T4,T5,T6) 

但我有这样的重复列

A  B  C  A1 B1 C1 A2 B2 C2 A3 B3 C3 A4 B4 C4
12 2  1  12 1  5  12 12 2  1   8  9  7 2   12
1  78 2  34 5  1  4  45 4  5   4  4  6 4   3
4  2  3  12 2  12 6  23 12 45 12  23 8 5   4

如您所见,重复的列数为 5 ( 3 5 = 15 ),但不是这个结果,而是我想要的输出如下:

A  B  C
12 2  1  
1  78 2  
4  2  3
12 1  5
34 5  1
12 2  12 
...
..

标签: rdataframedatatablesstat

解决方案


您可以根据字母拆分,将它们堆叠起来并列绑定它们,即

l1 <- split.default(df, gsub('\\d+', '', names(df)))
setNames(do.call(cbind, lapply(l1, function(i)stack(i)[1])), names(l1))

#    A  B  C
#1  12  2  1
#2   1 78  2
#3   4  2  3
#4  12  1  5
#5  34  5  1
#6  12  2 12
#7  12 12  2
#8   4 45  4
#9   6 23 12
#10  1  8  9
#11  5  4  4
#12 45 12 23
#13  7  2 12
#14  6  4  3
#15  8  5  4

推荐阅读