gpt4 book ai didi

r - 具有多个 (x,y) 对的数据框的高格式

转载 作者:行者123 更新时间:2023-12-02 16:07:56 25 4
gpt4 key购买 nike

我有一个数据框(实际上我更喜欢 data.table),其中包含多对 (x,y) 坐标和相应值 alpha 的列,如下所示:

    > data.frame(x_1 = 1:5, y_1 = 6:10, 
x_2 = 11:15, y_2 = 16:20,
x_3 = 21:25, y_3=26:30,
alpha = seq(0.2,1,0.2))
x_1 y_1 x_2 y_2 x_3 y_3 alpha
1 1 6 11 16 21 26 0.2
2 2 7 12 17 22 27 0.4
3 3 8 13 18 23 28 0.6
4 4 9 14 19 24 29 0.8
5 5 10 15 20 25 30 1.0

我需要将它组织成一个长格式,这样就有一个 x 和一个 y 列,其中一行坐标来自 df 三对堆叠在一起; alpha 的列,每个配对都重复;对应对索引的列,如下所示:

    x  y alpha index
1 1 6 0.2 1
2 11 16 0.2 2
3 21 26 0.2 3
4 2 7 0.4 1
5 12 17 0.4 2
6 22 27 0.4 3
7 3 8 0.6 1
8 13 18 0.6 2
9 23 28 0.6 3
10 4 9 0.8 1
11 14 19 0.8 2
12 24 29 0.8 3
13 5 10 1.0 1
14 15 20 1.0 2
15 25 30 1.0 3

我曾尝试使用 gather 但没有取得多大成功 - 尝试按对列进行融合,然后复制 alpha 值让我很伤心。然后我在 df 的行中求助于一个 for 循环,编译一个(预分配的)值向量 xyalpha 每次迭代,但即使使用预分配,与 python 中的类似操作相比,这也非常慢。

实际上,我有大约 20,000-40,000 行,还有更多“常量”列,例如 alpha 和 3-5 对索引。

如果有类似的问题,我深表歉意 - 我找不到一个关于非常具体的数据操作的措辞问题。非常感谢任何帮助!

最佳答案

gather 已被 pivot_longer 取代。我认为这可以满足您的需求。

df %>% 
pivot_longer(
c(starts_with("x"), starts_with("y")),
names_pattern="(.)_(.)",
names_to=c(".value", "index")
)
# A tibble: 15 x 4
alpha index x y
<dbl> <chr> <int> <int>
1 0.2 1 1 6
2 0.2 2 11 16
3 0.2 3 21 26
4 0.4 1 2 7
5 0.4 2 12 17
6 0.4 3 22 27
7 0.6 1 3 8
8 0.6 2 13 18
9 0.6 3 23 28
10 0.8 1 4 9
11 0.8 2 14 19
12 0.8 3 24 29
13 1 1 5 10
14 1 2 15 20
15 1 3 25 30

关于r - 具有多个 (x,y) 对的数据框的高格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68888464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com