2017-02-14 84 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