gpt4 book ai didi

r - 使用 R 中的笛卡尔积将行移至多列

转载 作者:行者123 更新时间:2023-12-02 13:59:15 25 4
gpt4 key购买 nike

假设一个简单的数据集类似于:

col  data
0 A
0 B
0 C
1 D
1 E
1 F
2 G
2 H
2 I

...其中的目标是将其转换为由“col”中不同值的数量给出的许多列,并且在每列中,由该列的关联“数据”指定的值...然后所有内容都以笛卡尔积的形式呈现(其中列不应在其内部混合):

0  1  2 (column names)
A D G
A D H
A D I
A E G
A E H
A E I
A F G
A F H
A F I
B D G
B D H
B D I
(etc...)

我已经花了一些时间了,dcast(df, data ~ col) 让我开始生成正确的列数,但我仍然需要从那里开始每列中的值的各种叉积。最后要注意的是,这里的列数没有任何固有的意义:任何解决方案都必须适用于原始数据中指定的列数。

最佳答案

expand.grid“根据提供的向量或因子的所有组合创建一个数据框”,一种outer笛卡尔积的长版本。它需要一组向量/因子或包含此类的列表,这让我们可以通过 col 简单地分割 data:

expand.grid(split(df$data, df$col))

# 0 1 2
# 1 A D G
# 2 B D G
# 3 C D G
# 4 A E G
# 5 B E G
# 6 C E G
# 7 A F G
# 8 B F G
# 9 C F G
# 10 A D H
# 11 B D H
# 12 C D H
# 13 A E H
# 14 B E H
# 15 C E H
# 16 A F H
# 17 B F H
# 18 C F H
# 19 A D I
# 20 B D I
# 21 C D I
# 22 A E I
# 23 B E I
# 24 C E I
# 25 A F I
# 26 B F I
# 27 C F I

关于r - 使用 R 中的笛卡尔积将行移至多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38082319/

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