从数据框创建矩阵

时间:2016-08-01 14:41:00

标签: r

我的数据框df1包含5列c1c2c3c4c5

df1 <- data.frame(c1 = c(1, 0, 1), c2 = c(0, 0, 1), c3 = c(2, 1, 0), c4 = c(1, 4, 3), c5 = c(1, 0, 0)) 

  #df1
  c1 c2 c3  c4  c5
  1  0  2   1   1
  0  0  1   4   0
  1  1  0   3   0 

我想要的输出是:

  1  3  3   4  5
  3  4  4   4  4
  1  2  4   4  4

基本上,我根据列号及其值(值始终小于或等于5)创建矩阵。例如,df1中的第2行有14属于列c3c4。因此,所需矩阵中的第2行将为3 4 4 4 4

我自己尝试过。我的代码涉及多个嵌套控制流,并且不适用于大型数据框。

2 个答案:

答案 0 :(得分:2)

一点PS C:\> Get-ImmediateInvocationString -myArg $myVariable; $lol = ""; Write-Host $lol lol 魔法:

apply

答案 1 :(得分:1)

这是一个稍微不同的选项

t(apply(df1, 1, FUN = function(x) rep(which(x!=0), x[x!=0])))
#     [,1] [,2] [,3] [,4] [,5]
#[1,]    1    3    3    4    5
#[2,]    3    4    4    4    4
#[3,]    1    2    4    4    4