我想将数据帧转换为其他格式。一个例子如下:
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中找不到类似的语法。我可能会在错误的方向上思考解决方案。
答案 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