R 尝试使用mutate case_when和it';它没有改变任何值吗?

R 尝试使用mutate case_when和it';它没有改变任何值吗?,r,R,我有4个代表4个不同巢穴的csv文件。我正在尝试将它们合并到一个电子表格中。我在输入数据时出现了一些错误,我正在尝试在R中更改这些错误。例如,nest 4中的“GBGB”被写为“GBGB”,而不是“GBBG”。这是我使用的代码: nest.4 <- nest.4 %>% mutate(Species = case_when( Species %in% c("GBGB") ~ "GBBG")) nest.4% 突变(物种=情况)( 物种百分比,单位为%c(“GBGB”)

我有4个代表4个不同巢穴的csv文件。我正在尝试将它们合并到一个电子表格中。我在输入数据时出现了一些错误,我正在尝试在R中更改这些错误。例如,nest 4中的“GBGB”被写为“GBGB”,而不是“GBBG”。这是我使用的代码:

nest.4 <- nest.4 %>% 
  mutate(Species = case_when(
    Species %in% c("GBGB") ~ "GBBG"))
nest.4%
突变(物种=情况)(
物种百分比,单位为%c(“GBGB”)~“GBBG”))
但这并没有改变我的任何价值观!一旦我修复了这些错误,我还想在最后将它们结合起来。我想使用:

nests.df <- left_join(nest.1, nest.2, nest.3, nest.4)

nests.df对于left_join函数,一次只能连接2个data.frames。函数将“nest.3”视为“by”参数,这不是您想要的。
left_join采用如下参数:

左联合(df1,df2,by=…)

还有其他一些参数(请使用
?left_join
)查看它们),但我想这些是对您最重要的参数。 你可以做:

左联合(左联合(df1,df2),左联合(df3,df4))

函数似乎正确使用时,
mutate
case\u。也许你的弦是水平的?这有时会把事情搞砸。请尝试:
nest.4$Species
,如果它提供了可能导致问题的所有级别的概述。导入文件时(使用read.csv或read.table或您使用的任何工具),请设置
stringsAsFactors=FALSE
,或者也可以设置
nest.4$Species=as.character(nest.4$Species)
以删除因子/级别


也可以尝试使用
ifelse()
作为case\u when的替代方案,看看它在原则上是否有效。

下面是一个关于case\u何时以及如何使用它的示例。要合并它们,可以使用
Reduce(函数(…)merge(…,by=your_var)、list(nest.1、nest.2,…)
。要获得更多帮助,请与预期结果一起分享一个可复制的示例
case\u when
应为
case\u when(物种%in%c(“GBGB”)~“GBBG”,TRUE~物种)
,以确保在不满足条件时,所有其他物种值不会转换为NA。