gpt4 book ai didi

r - 如何按照我想要的顺序拆分数据框?

转载 作者:行者123 更新时间:2023-12-02 15:11:46 24 4
gpt4 key购买 nike

我有一个这样的数据框df

df x     y   id10   5     212   10    215   0     1

我想按 id 拆分。我使用 split(df, df$id) 得到

x   y   id15  0   1

x   y    id10  5    212  10   2

但我希望 id=2 的先于 id=1 的所以基本上我希望输出是

x     y     id10   5      212   10     2

x    y    id15   0    1

最佳答案

根据 split() 的文档,列表的组件由 f 的级别命名(在转换为因子后...... )fsplit() 的第二个参数。因此, block 在 split 后按因子水平的顺序出现。

OP has requested这些 block 应该按照它们在 df 中出现的相同顺序返回。这可以通过 Hadley 的 forcats 包的 fct_inorder() 函数方便地实现:

split(df, forcats::fct_inorder(factor(df$id)))
#$`2`
# x y id
#1 10 5 2
#2 12 10 2
#
#$`1`
# x y id
#3 15 0 1

请注意,

  • id 本身保持不变。 fct_inorder() 仅用于定义拆分。
  • 之所以需要额外调用 factor(),是因为 id 的类型是 integer

编辑 这也可以在没有任何包的情况下实现:

split(df, factor(df$id, levels = unique(df$id)))

关于r - 如何按照我想要的顺序拆分数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420629/

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