【问题标题】:Construct dataframe with levels [duplicate]构建具有级别的数据框[重复]
【发布时间】:2017-09-06 08:58:29
【问题描述】:

我刚从 Python 迁移到 R,我想知道 R 中是否有任何类似于 pandas.MultiIndex.from_product 的函数?

例子:

letters <- c('a', 'b')
numbers <- c(1, 2, 3)
df <- somefunction(letters, numbers)
df
 letters numbers
1   a       1
2   a       2
3   a       3
4   b       1
5   b       2
6   b       3

【问题讨论】:

  • 你如何决定numbers应该重复两次?
  • 数字应按字母长度重复。我可以为它写一个小函数,但我想知道 R 中是否有任何现有的函数。

标签: r


【解决方案1】:

是的:

> letters <- c('a', 'b')
> numbers <- c(1, 2, 3)
> expand.grid(letters=letters, numbers=numbers)
  letters numbers
1       a       1
2       b       1
3       a       2
4       b       2
5       a       3
6       b       3

您还可以使用data.table 包中的CJ。它更快。但是结果不是普通的dataframe,而是datatable:

> library(data.table)
> CJ(letters=letters, numbers=numbers)
   letters numbers
1:       a       1
2:       a       2
3:       a       3
4:       b       1
5:       b       2
6:       b       3

【讨论】:

  • expand.grid 部分与重复帖子完全相同,但data.table CJ 是新的,我建议将CJ 作为重复帖子的答案,并删除这个?
猜你喜欢
  • 2021-12-02
  • 2018-02-12
  • 2021-07-02
  • 2018-09-14
  • 1970-01-01
  • 2021-05-14
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多