【问题标题】:Hierarchical indexing in R dataframeR数据框中的分层索引
【发布时间】:2023-04-09 10:13:01
【问题描述】:

我有一个 CSV 文件,我正试图将它读入 R 中的数据框,我想知道如何使用分层索引来存储它。换句话说,我想用这样的列名制作一些东西:

('a1', 'b1', 'c1'), ('a1', 'b1', 'c2'), ('a1', 'b1', 'c3'), ('a1', 'b1', 'c4'),
('a1', 'b2', 'c1'), ('a1', 'b2', 'c2'), ('a1', 'b2', 'c3'), ('a1', 'b2', 'c4'),
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24

变成这样:

_________________________________________________
||                      a1                     ||
_________________________________________________
||          b1          ||          b2         ||
_________________________________________________
||  c1 | c2 | c3 | c4   ||   c1 | c2 | c3 | c4 ||
_________________________________________________
||  1  |  2 |  3 |  4   ||    5 |  6 |  7 |  8 ||
||  9  | 10 | 11 | 12   ||   13 | 14 | 15 | 16 ||
||  17 | 18 | 19 | 20   ||   21 | 22 | 23 | 24 ||
_________________________________________________

当转换为 R 数据帧时。我该怎么做呢?尽管我对 Python 中的 Pandas 数据框非常熟悉,但我还是 R 新手。谢谢

【问题讨论】:

  • 您显示的内容不适合 data.frame。它应该是一个嵌套列表。无法为您提供更多帮助,因为我不明白您的输入内容如何。
  • ...或融化的“长”数据框。
  • 这不是一回事。 Data.frames 是扁平的方形数据框。您可能会考虑使用列表,但这实际上取决于您将如何处理这些数据。
  • @MrFlick “Data.frames 是扁平的方形数据框”。所以在R中没有这样的选择吗?我不确定 data.frames 是否平坦。
  • @Roland 我将编辑我的帖子以使其更清晰。

标签: r csv dataframe


【解决方案1】:

我犹豫是否将其放在答案中,但这是说明我在说什么的唯一方法。在 R 中,我们会像您提供的那样获取分层数据并像这样存储它:

df <- data.frame(grp1 = 'a1',
                 grp2 = rep(c('b1','b2'),each = 4),
                 grp3 = rep(c('c1','c2','c3','c4'),times = 2))
> df
  grp1 grp2 grp3
1   a1   b1   c1
2   a1   b1   c2
3   a1   b1   c3
4   a1   b1   c4
5   a1   b2   c1
6   a1   b2   c2
7   a1   b2   c3
8   a1   b2   c4

如果您有更多组或级别,您可以添加更多列并根据需要复制之前的列。

【讨论】:

  • 这正好回答了我措辞不佳的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2019-11-17
  • 2015-10-02
  • 1970-01-01
相关资源
最近更新 更多