【问题标题】:Separate function not delimiting correctly [duplicate]单独的函数没有正确定界[重复]
【发布时间】:2017-02-14 19:14:04
【问题描述】:

我刚刚学习 R,但无法复制分离()函数的使用。

下面有一些我想分隔的数据。我的代码如下所示:

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

【问题讨论】:

  • sep 参数采用正则表达式,所以如果你的意思是字面意思,你需要转义管道:sep = '\\|'。或者只是不指定,它无论如何都会在管道上分离。此外,separate_rows 在拆分数不均匀时会更好。
  • 感谢 alistaire,在管道前面添加 \\ 成功了!

标签: r tidyr


【解决方案1】:

当每行的分隔符数量不同时,我们可以使用cSplit,而不是手动指定列名,它会自动执行此操作

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

【讨论】:

  • 感谢您,下次将研究 splitstackshape。只是尝试一次掌握一个基本的 R 函数。
猜你喜欢
  • 2015-01-06
  • 2021-10-07
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 1970-01-01
相关资源
最近更新 更多