Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中操作多个列_R - Fatal编程技术网

如何在R中操作多个列

如何在R中操作多个列,r,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]) 如何更改命令以获得所需的输出?如果您不关心名称,并且有数字数据,那么最简单的解决方案是强制使用矩阵,然后使用向量,如下所示: as.vector( t( x ) ) # [1] 4 8 2 6 5 4 6 3 9 1

我有下表:

  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
#数据

y假设您的数据是这样设置的:

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

使用
dput
包含您的数据,以便于人们帮助您……或者可能只是
unlist
它,尽管顺序不同。如果原始数据是
df
,最终向量是
x
names(x)=do.call(“c”,lappy(colnames(df),function(x){paste0(rownames(df),x)})
@joran我在努力维护秩序——我不知道这是否重要。现在还有名字!
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