我有一个混乱的表格,我将其读入类似于以下简化的数据框中,我想对其进行解析。
mydf <- data.frame(group=LETTERS[1:5], code=101:105, ids=c('g1:id1,id2,id3\ng2:id4,id5',
'id6,id7,id8,id9',
'g1:id10,id11\ng3:id12',
'g2:id13,id14',
'id15'))
它看起来像:
> mydf
group code ids
1 A 101 g1:id1,id2,id3\ng2:id4,id5
2 B 102 id6,id7,id8,id9
3 C 103 g1:id10,id11\ng3:id12
4 D 104 g2:id13,id14
5 E 105 id15
我需要将折叠的ids
列分成多行,以获得长格式的最终数据框。
对于这一点,我通常会separate_rows
从申请开始tidyr
,但这种情况还有一个额外的问题:一些折叠ids
被分组到子组中。
我想我应该先将这些子组分成不同的 ID 列,然后在这些列上应用separate_rows
或separate_longer_delim
...我不知道该怎么做。
我期望的最终数据框将是这样的,采用长格式,并subgroup
在附加列中包含信息:
> mydf_new
group code id subgroup
1 A 101 id1 g1
2 A 101 id2 g1
3 A 101 id3 g1
4 A 101 id4 g2
5 A 101 id5 g2
6 B 102 id6 <NA>
7 B 102 id7 <NA>
8 B 102 id8 <NA>
9 B 102 id9 <NA>
10 C 103 id10 g1
11 C 103 id11 g1
12 C 103 id12 g3
13 D 104 id13 g2
14 D 104 id14 g2
15 E 105 id15 <NA>
一种方法是将更宽/更长分为几个步骤:
如果您愿意,这可能包括一些调整,您可以使用它们来开发更简洁的基础 R 版本:
给予