如何操作R中的多个列

时间:2013-06-05 15:57:11

标签: r

我有下表:

  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])

如何更改命令以获得所需的输出?

2 个答案:

答案 0 :(得分:5)

如果您不关心名称并且您有数字数据,那么最简单的解决方案是强制转换矩阵然后转换为这样的矢量:

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

答案 1 :(得分:2)

假设您的数据以这种方式设置:

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