重塑R中的矩阵并将每n行转换为一行

问题描述 投票:0回答:1

我有一个数据框df像:

year     location
1           A
2           B
3           C
------------------
1           X
5           A
10          F
------------------
3          F
5          x
2          y

我想重新塑造它

year_1  location_1     year_2   location_2    year_3  location_3
1         A             2         B               3      F
3         C             1         X               5      X
5         A             10        F               2      Y

我可以做一个hack,并连接前两列,并做

d <- matrix(df, nrow = 70, byrow = FALSE)

但是后来我又要分开连接的东西了,有没有一种巧妙的方法呢?

r reshape melt dcast
1个回答
1
投票

分裂和重组怎么样:

 wide.df <- Reduce(cbind, split(df, cumsum( rep(c(1,0,0), nrow(df)/3) ) )

这将优于强制矩阵和反强制到数据帧,因为它不会对因素或字符搞乱这些类没有任何困难。使用矩阵作为中间体将首先松开所有级别,如果你同时拥有两个字符和因子,你将会有一个非常令人困惑的混乱。

如果您需要确切的结果,您可能需要稍微调整列名称,如果您发布了可复制粘贴的[MCVE],我很乐意帮助您

© www.soinside.com 2019 - 2024. All rights reserved.