R数据帧中的层次索引
我有一个CSV文件,我正试图读入R中的数据帧中,我想知道如何使用分层索引来存储它。换句话说,我想用列名制作如下内容:R数据帧中的层次索引,r,csv,dataframe,R,Csv,Dataframe,我有一个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,
('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 ||
_________________________________________________
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
结果是这样的:
('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 ||
_________________________________________________
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
当转换为R数据帧时。我该怎么做呢?虽然我对Python中的Pandas数据帧非常熟悉,但我还是新手。谢谢我不太愿意回答这个问题,但这是说明我所说内容的唯一方法。在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 ||
_________________________________________________
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
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
如果您有更多的组或级别,则需要添加更多列,并根据需要复制以前的列。您显示的内容不适合data.frame。它应该是一个嵌套列表。我不能帮你更多的忙,因为我不明白你的输入看起来是什么样子……或者一个融化的“长”数据帧。这不是一件事。框架是扁平的方形数据框。你可以考虑使用列表,但这实际上取决于你将如何处理这些数据。所以在R中没有这样的选项?我不确定data.frames是否是平面的。@Roland我将编辑我的帖子,让它更清晰。这正好回答了我的问题,我的问题措辞很糟糕。非常感谢。