2017-02-14 90 views
-3

我刚刚学习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 
+2

'sep'参数需要使用正则表达式,所以如果你的意思是''sep ='\\ |'',你需要转义管道。或者只是不指定,并且它将在管道上分开。另外,当你有不均匀分割数时,'separate_rows'会更好。 – alistaire

+1

感谢alistaire,在管道前增加\\! – Alan

回答

0

代替手动指定的列名时,分隔符的数量是针对各行不同的,我们可以用cSplit它自动执行此

library(splitstackshape) 
cSplit(DF, "PARAM_2", "|") 
+1

感谢这一点,下次将考虑splitstackshape。试图一次抓一个基本的R函数。 – Alan