粘贴两个向量并重新整形,每行一组

时间:2015-09-18 17:38:30

标签: r

我想将数据帧转换为其他格式。一个例子如下:

    value        index
1   0.10         18
2   0.14          5   
3   0.14         40   
4   0.14         28   
5   0.14         29   
6   0.14         46   
7   0.14         13   
8   0.17         10   
9   0.17         35   
10  0.17         38

转换为:

#Basically, each row has 5 groups of numbers. Each group has two numbers. 
#First number in a group is from the second column
#Second number in a group is from the first column
#So, the end dataframe will have 2 rows each with 10 columns

18 0.1     5  0.14     40 0.14     28 0.14     29 0.14 
46 0.14    13 0.14     10 0.17     35 0.17     38 0.17

在C中,我可以按如下方式使用for循环

for (i=1; i<num_rows; i *=5) {
   //set values for each row 
}

但是,我在R中找不到类似的语法。我可能会在错误的方向上思考解决方案。

1 个答案:

答案 0 :(得分:2)

您可以使用paste函数将两列粘贴在一起,然后使用matrix函数将它们添加到每行包含五个元素的矩阵中:

matrix(paste(dat$index, dat$value), ncol=5, byrow=TRUE)
#      [,1]      [,2]      [,3]      [,4]      [,5]     
# [1,] "18 0.1"  "5 0.14"  "40 0.14" "28 0.14" "29 0.14"
# [2,] "46 0.14" "13 0.14" "10 0.17" "35 0.17" "38 0.17"

如果您希望将每个值都放在一个单独的列中,而不是粘贴它们,则可以使用:

matrix(rbind(dat$index, dat$value), ncol=10, byrow=TRUE)
#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
# [1,]   18 0.10    5 0.14   40 0.14   28 0.14   29  0.14
# [2,]   46 0.14   13 0.14   10 0.17   35 0.17   38  0.17