Python 使用增量自定义标题名称重塑R列的形状
我有一个数据框,有3列,最小,最大,平均。数据帧包含7000行Python 使用增量自定义标题名称重塑R列的形状,python,r,statistics,Python,R,Statistics,我有一个数据框,有3列,最小,最大,平均。数据帧包含7000行 | Min | Max | Average | | 1.2 | 1.4 | 1.3 | | 1.0 | 2.0 | 1.5 | | 1.2 | 1.4 | 1.6 | | 1.0 | 7.0 | 1.9 | 我想要 | Min1 | Max1 | Average1 | Min2 | Max2 | Average2 | | 1.2 | 1.4 | 1.3 | 1.0 | 2.0 |
| Min | Max | Average |
| 1.2 | 1.4 | 1.3 |
| 1.0 | 2.0 | 1.5 |
| 1.2 | 1.4 | 1.6 |
| 1.0 | 7.0 | 1.9 |
我想要
| Min1 | Max1 | Average1 | Min2 | Max2 | Average2 |
| 1.2 | 1.4 | 1.3 | 1.0 | 2.0 | 1.5 |
| 1.2 | 1.4 | 1.6 | 1.0 | 7.0 | 1.9 |
请注意标题是如何更改的,以指示第一次观察和第二次观察
我已经看过了关于重塑的其他答案,其他答案都没有显示新列应该如何重命名以包含数字 在
R
中,我们可以使用data.table
。将“data.frame”转换为“data.table”(setDT(df1)
),使用“grp”创建一个分组变量,以便每两行都有一个唯一的索引(“grp”),使用dcast
我们使用公式方法将“long”格式转换为“wide”格式。rowid(grp)
为每个grp提供一个序列
library(data.table)
setDT(df1)[, grp := gl(.N, 2, .N)]
res <- dcast(df1, grp~rowid(grp), value.var = c("Min", "Max", "Average"),
sep="")[, grp := NULL][]
我们还可以使用
base R
来实现这一点,方法是通过创建序列向量和cbind
输出来分割数据集
do.call(cbind, split(df1, (seq_len(nrow(df1))-1) %%2 + 1))
或者我们可以使用逻辑索引(循环到最后一行)对交替行进行子集划分,并使用data.frame
对它们进行合并
data.frame(df1[c(TRUE, FALSE),], df1[c(FALSE, TRUE),])
# Min Max Average Min.1 Max.1 Average.1
#1 1.2 1.4 1.3 1 2 1.5
#3 1.2 1.4 1.6 1 7 1.9
您想要python还是
r
解决方案?@akrun r solution请快速回复。您能否编辑响应以解释setDT(df1)[,grp:=gl(.N,2,.N)]和grp~rowid(grp)实际在做什么?感谢您的快速回复。您是否可以编辑响应以解释setDT(df1)[,grp:=gl(.N,2,.N)]和grp~rowid(grp)实际上在做什么?是否有一种更简单的方法使用重塑包来实现这一点?或者您能解释一下上面的一些代码吗?@edb500我添加了一些解释。@ebd500又添加了两个选项。希望能有帮助
data.frame(df1[c(TRUE, FALSE),], df1[c(FALSE, TRUE),])
# Min Max Average Min.1 Max.1 Average.1
#1 1.2 1.4 1.3 1 2 1.5
#3 1.2 1.4 1.6 1 7 1.9