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

时间:2019-04-04 09:36:29

标签: r dataframe dplyr mutate

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

变量属性Acres是一个字符串,稍后将转换为一个包含'10 -Jan'(1/10/2019)的因子。我正在尝试将Acres的值“ 10-Jan”更改为“ 1 to 10”,但该更改未对数据帧进行任何更改。

下面的“ YearBuilt”的第二个代码示例上也存在相同的故障更新问题:尝试将“ 15”清除/更改为“ 2015”。

我正在使用R Studio(3.5)。

dplyr的努力探索:

我尝试过平均分配

  

'mutate(df_forecast $ Acres = case_when ...'),导致此错误。msg:'错误:意外'='在:   “ df_forecast%>%     mutate(df_forecast $ Acres =“'

我尝试了'=='进行'mutate(df_forecast $ Acres == case_when ...'的操作,结果是'data.frame':22745 obs。of 19 variables

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)

1 个答案:

答案 0 :(得分:1)

您不必只写files = files.map do |f| f = nil unless File.exist?(f) f end.compact.sort_by { |f| File.send(func, f) } 即可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的内容分配回了Acres,但是可以是任何东西。

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