我正在使用 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。