This question already has an answer here:
How to strsplit different number of strings in certain column by do function

(1个答案)


3年前关闭。




我在R中有一个data.frame,为简单起见,其中有一个我想分开的列。看起来像这样:
V1
Value_is_the_best_one
This_is_the_prettiest_thing_I've_ever_seen
Here_is_the_next_example_of_what_I_want

我的实际数据非常大(数百万行),因此我想使用tidyr的单独函数(因为它的速度非常快)来仅将前几个实例分开。我希望结果如下:
V1       V2     V3     V4
Value    is     the    best_one
This     is     the    prettiest_thing_I've_ever_seen
Here     is     the    next_example_of_what_I_want

如您所见,分隔符是_,V4列可以具有不同数量的分隔符。我想保留V4(而不是丢弃它),但不必担心其中有多少东西。总会有四列(即我的所有行都没有V1-V3)。

这是我一直在使用的开始tidyr命令:
separate(df, V1, c("V1", "V2", "V3", "V4"), sep="_")

这摆脱了V4(并发出警告,这不是最大的问题)。

最佳答案

您需要带extra选项的"merge"参数。这只允许您定义新列时进行尽可能多的拆分。

separate(df, V1, c("V1", "V2", "V3", "V4"), extra = "merge")

     V1 V2  V3                             V4
1 Value is the                       best_one
2  This is the prettiest_thing_I've_ever_seen
3  Here is the    next_example_of_what_I_want

关于r - tidyr仅分隔前n个实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37126634/

10-12 18:47