我有下表:
X Y
A 4 8
B 2 6
C 5 4
D 6 3
E 9 13
但我想重新安排它看起来像:
AX AY BX BY CX CY......
4 8 2 6 5 4
我在R工作并通过做得到桌子
table(db[,1],db[,2])
如何更改命令以获得所需的输出?
我有下表:
X Y
A 4 8
B 2 6
C 5 4
D 6 3
E 9 13
但我想重新安排它看起来像:
AX AY BX BY CX CY......
4 8 2 6 5 4
我在R工作并通过做得到桌子
table(db[,1],db[,2])
如何更改命令以获得所需的输出?
如果您不关心名称并且您有数字数据,那么最简单的解决方案是强制转换为矩阵,然后转换为向量,如下所示:
as.vector( t( x ) )
# [1] 4 8 2 6 5 4 6 3 9 13
如果您还想保留名称,请使用expand.grid
获取组合...
# The data
y <- as.vector( t( x ) )
# Combinations of row and column names
nms <- expand.grid( colnames(x) , rownames(x) )
# Rename vector with desired names
names(y) <- paste0( nms[,2] , nms[,1] )
#AX AY BX BY CX CY DX DY EX EY
# 4 8 2 6 5 4 6 3 9 13
假设您的数据是这样设置的:
db <- data.frame(
c(rep("A", 4), rep("B", 2), rep("C", 5), rep("D", 6), rep("E", 9),
rep("A", 8), rep("B", 6), rep("C", 4), rep("D", 3), rep("E", 13)),
c(rep("X", 26), rep("Y", 34)),
stringsAsFactors = FALSE)
tab <- table(db[,1],db[,2])
您可以在单行中执行此操作:
array(tab, dimnames = list(do.call("paste0", expand.grid(dimnames(tab)))))
AX BX CX DX EX AY BY CY DY EY
4 2 5 6 9 8 6 4 3 13