如何将不整洁的列表转换成整洁的数据框?

时间:2020-10-01 05:47:53

标签: r matrix tidy

我在网上抓取的数据的结构很奇怪。我在将此向量整理到数据帧时遇到麻烦。

下面是一个图表,描述了数据如何流过矢量,如箭头所示。

data structure

当将向量转换成矩阵时,我正在努力想出一种有效的方法来做到这一点。我可以通过每20个条目进行子集化来获得理想的结果。

可复制的代码

c("+282", "-331", "+295", "-325", "+283", "-352", "+270", "-325", 
"+260", "-320", "+270", "-330", "+275", "-340", "+265", "-325", 
"+283", "-352", "+270", "-325", "+266", "-311", "+280", "-310", 
"+267", "-330", "+260", "-310", "+275", "-350", "+265", "-325", 
"+270", "-330", "+250", "-320", "+267", "-330", "+260", "-310")

**工作代码可获得理想的结果

as.data.frame(matrix(odds[1:20], ncol = 10, byrow = F))
as.data.frame(matrix(odds[21:40], ncol = 10, byrow = F))

理论上,我可以将这两个数据帧绑定在一起,但是在较大的数据集中,我需要完成大量工作。解决这个问题的最有效方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以创建每20个值的数据框并将其组合:

n <- 20
do.call(rbind, by(odds, ceiling(seq_along(odds)/n), function(x) 
               data.frame(matrix(x, ncol = n/2))))

#      X1   X2   X3   X4   X5   X6   X7   X8   X9  X10
#1.1 +282 +295 +283 +270 +260 +270 +275 +265 +283 +270
#1.2 -331 -325 -352 -325 -320 -330 -340 -325 -352 -325
#2.1 +266 +280 +267 +260 +275 +265 +270 +250 +267 +260
#2.2 -311 -310 -330 -310 -350 -325 -330 -320 -330 -310
相关问题