单独功能不能正确分隔
问题描述:
我刚刚学习R,并且无法复制separate()函数的使用。单独功能不能正确分隔
我在下面有一些我想划定的数据。我的代码如下所示:
separate(DF, col ="PARAM_2",paste0("x",1:257),sep="|")
这里是原始数据的样本:
PARAM_2 TRANSACTION_ID REVENUE
1 16522337|10086236 3812351327 449.97
2 21106549|24390750 3851589288 67.98
3 23475149 3804446998 54.99
4 19397324 3866373678 224.97
5 23317326|23825351 3820764147 109.99
6 20433128|20433140|20433165 4962022906 369.94
7 19506902 3835040778 10.50
8 24095014|25029701|24244086|24244271|16803155 3910007218 142.97
9 24036073 3887666318 22.49
10 19972354|14519726|18168381 3757376277 98.89
我不太知道为什么,但代码是将一个字符每行,而不是通过划定|分隔器。下面是用我的有缺陷的代码的输出是这样的:
x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15 x16 x17
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 6 5 2 2 3 3 7 | 1 0 0 8 6 2 3
答
代替手动指定的列名时,分隔符的数量是针对各行不同的,我们可以用cSplit
它自动执行此
library(splitstackshape)
cSplit(DF, "PARAM_2", "|")
+1
感谢这一点,下次将考虑splitstackshape。试图一次抓一个基本的R函数。 – Alan
'sep'参数需要使用正则表达式,所以如果你的意思是''sep ='\\ |'',你需要转义管道。或者只是不指定,并且它将在管道上分开。另外,当你有不均匀分割数时,'separate_rows'会更好。 – alistaire
感谢alistaire,在管道前增加\\! – Alan