Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用增量自定义标题名称重塑R列的形状_Python_R_Statistics - Fatal编程技术网

Python 使用增量自定义标题名称重塑R列的形状

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 |

我有一个数据框,有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  | 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