首页 > 解决方案 > 为什么“分离”和“联合”功能在 dplyr 中不起作用

问题描述

我使用了该功能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)?当我运行代码时,它在内部执行某些操作,正如我所见,它运行命令,但输出是相同的数据帧(即没有新变量code_locseason1.

提前谢谢了。

*没有错误信息

标签: rdplyrtidyr

解决方案


Since you mention no error message, I assume the function works properly but you simply fail to save the output.

Usually dplyr flows like this:

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

Alternatively, this works as well:

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

Naturally you could also save the changed data frame under a new name to preserve the original data.


推荐阅读