R dplyr 突变条件when_case无法更新数据帧



我正在使用 R dplyr::mutate 有条件地更改数据框变量值。df_forecast派生自使用 stringsAsFactors=F 的 CSV 文件输入。

变量属性Acres是一个字符串,稍后将转换为包含"10-Jan"(1/10/2019(的因子。我正在尝试将英亩"10-Jan"的值更改为"1到10",但突变未在数据框中进行任何更改。

同样的失败更新问题存在于下面"建造年份"的第二个代码示例中:尝试清理/更改"15"到"2015"。

我正在使用R Studio (3.5(。

DPLYR探索的工作:

我尝试过相等的分配

'变异(df_forecast$英亩 = case_when..."导致此错误消息:"错误:意外的'='在: "df_forecast%>% 变异(df_forecast$英亩 ="'

我尝试"=="到"变异(df_forecast$英亩== case_when...'结果为"data.frame":22745 个 obs. 的 19 个变量

df_forecast <- data.frame(forecast)
df_forecast %>% 
  mutate(df_forecast$Acres == case_when(df_forecast$Acres == "10-Jan" ~ "1 to 10")) %>% 
##
str(df_forecast)
df_forecast %>% 
  mutate(df_forecast$YearBuilt == case_when(df_forecast$YearBuilt == "15" ~ "2015")) %>% 
##
str(df_forecast)

您不必写df_forecast$Acres只是Acres并指定当没有任何条件适用时必须发生的情况。

data <- data.frame(Acres = c("10-Jan", "10-Jan", "anytime", "10-Jan", "10-Jan", "anytime"),
                   stringsAsFactors = FALSE) 
> data
    Acres
1  10-Jan
2  10-Jan
3 anytime
4  10-Jan
5  10-Jan
6 anytim

data %>% 
  mutate(Acres = case_when(Acres == "10-Jan" ~ "1 to 10",
                           TRUE ~ Acres)) -> data
> data
    Acres
1 1 to 10
2 1 to 10
3 anytime
4 1 to 10
5 1 to 10
6 anytime

我只是在Acres != "10-Jan"时将Acres的内容分配回Acres,但它可以是任何东西。

更新:要使更改永久化,您还必须将结果分配给 data.frame。

最新更新