我有一个看起来像这样的数据框:
cat split_me
<chr> <chr>
1 MVHYM7693B c(1,7)
2 ZRRBS1363E c(2,7,18)
3 ZXYLV2407F 3
4 HXPPE8608M 4
5 JDARX0644Q c(5,19)
6 HDBOK8136L 6
7 DCJPS0833K c(1,2,18)
我可以使用以下方法拆分数据:
splt <- to_split %>%
split(.$split_me)
哪个列出了19个元素。但是原始数据有20个元素。自身重复的拆分为拆分c(5,19)
。如何忽略此重复并将c(5,19)
拆分两次?
我想根据cat
中to_split
列的名称来命名拆分,因此c(5,19)
将具有不同的名称(JDARX0644Q
)和(BZRXF3978Z
)。
数据:
to_split <- structure(list(cat = c("MVHYM7693B","ZRRBS1363E","ZXYLV2407F","HXPPE8608M","JDARX0644Q","HDBOK8136L","DCJPS0833K","UGDYS1458B","ROQIP3617B","HZMGG4347S","EHESH8836T","YGXZY0073I","nmRDZ9798F","WXBKD9937H","JEMQK6388P","qqMSV0889M","IBMJM4467Q","IOIDB2993Q","BZRXF3978Z","NJLNW3044Z"),split_me = c("c(1,7)","c(2,18)","3","4","c(5,19)","6","c(1,"8","9","10","11","12","c(13,"14","15","16","17",13,"20")),class = c("tbl_df","tbl","data.frame"),row.names = c(NA,-20L))
编辑:
我认为最适合我的数据的是重新排列split_me
列。目前数据如下:
# A tibble: 20 x 2
cat split_me
<chr> <chr>
1 MVHYM7693B c(1,18)
8 UGDYS1458B 8
9 ROQIP3617B 9
10 HZMGG4347S 10
11 EHESH8836T 11
12 YGXZY0073I 12
13 nmRDZ9798F c(13,18)
14 WXBKD9937H 14
15 JEMQK6388P 15
16 qqMSV0889M 16
17 IBMJM4467Q 17
18 IOIDB2993Q c(2,18)
19 BZRXF3978Z c(5,19)
20 NJLNW3044Z 20
1
中的c(1,7)
对应于数据的第1行,7
对应于7
行。我认为我应该重新安排该列,以便:
行2
不变。即c(2,18)
-2
是第一个,因此不需要更改。由于5
中的5
是第一个并且与行号c(5,19)
相匹配,因此行5
也不改变。
第7
行更改。最初它是c(1,18)
,但是7
是序列中的第三个,我想将其移到第一个。 c(7,1,18)
。
行13
不变。
第18行更改-原始c(2,18)
所需的输出c(18,13)
第19行更改-原始c(5,19)
所需的输出c(19,5)
。
这应该可以解决重复的问题以及我稍后在代码中遇到的问题。例如,我试图将其拆分为c(5,19)
:5
中包含的数据将是arranged
或高于19
中的数据(在数据帧中) 。然后,对于拆分c(19,5)
,19
中的数据将位于5
中的数据之上。 (我希望这是有道理的)