为什么“分离”和“统一”功能在dplyr中不起作用

时间:2019-08-12 05:45:40

标签: r dplyr tidyr

我使用功能separateunite清除了一些数据,但它们似乎没有作用

我一直在尝试使用dplyr将列字符串分成两列。该功能非常简单,我不知道为什么它不起作用。 我要分离的变量(列)为season,其中包含“ MAD_S1,KGA_S1”等值(成千上万条记录,但是有6个类别,所有类别均由“ _S1”分隔;已检查原始数据并且都遵循相同的语法)。因此,我申请了

separate(six_sites_spp, season, c("code_loc","season1"), sep = "_")

我尝试了更明确的脚本,例如:

separate(six_sites_spp, 
     col = "season",
     into = c("code_loc", "season1"),
     sep = "_")

但也没有。

我已经更新了dplyr版本,并尝试了几种方法。如果我使用unite来合并两列,那么它也不起作用。我通过使用经典的paste函数解决了这个问题,但不是为了拆分;但是,我确实想知道为什么dplyr不起作用(这是一个很好的软件包,由于某些原因,其他命令也不起作用)。

请问有人可以提供反馈吗?这是系统中可能的“错误”还是某些错误(Windows10,HP envi)?我是否需要同时使用另一个软件包(我在同一脚本中也使用tidyr)?任何版本不匹配(我的R版本3.5.1(2018-07-02)?)当我运行代码时,它在内部执行某些操作,因为我看到它运行命令,但是输出是相同的数据帧(即没有新变量{ {1}},code_loc

非常感谢。

*没有错误消息

1 个答案:

答案 0 :(得分:0)

由于您未提及任何错误消息,因此我认为该功能正常运行,但是您根本无法保存输出。

通常dplyr像这样流动:

library(dplyr)
six_sites_spp %>%
    separate(season, c("code_loc", "season1"), sep = "_")) %>%
    {.} -> six_sites_spp # This saves the changed data frame under the old name

或者,它也可以工作:

six_sites_spp <- separate(six_sites_spp,season, c("code_loc", "season1"), sep = "_"))

自然地,您还可以使用新名称保存更改后的数据框以保留原始数据。