【发布时间】:2019-08-26 00:16:42
【问题描述】:
我正在使用 R dplyr::mutate 有条件地更改数据框变量值。 df_forecast 源自使用stringsAsFactors=F 的CSV 文件输入。
变量属性Acres 是一个字符串,稍后将转换为一个因子,其中包含“10-Jan”(2019 年 1 月 10 日)。我正在尝试将 Acres '10-Jan' 的值更改为 '1 to 10',但 mutate 并没有在数据框内进行任何更改。
同样的失败更新问题出现在下面“YearBuilt”的第二个代码示例中:尝试将“15”清理/更改为“2015”。
我正在使用 R Studio (3.5)。
探索dplyr的努力:
我尝试过平等分配
'mutate(df_forecast$Acres = case_when...' 导致此错误消息:'错误:意外'=' in: “df_forecast %>% 变异(df_forecast$Acres =“'
我尝试 '==' 到 'mutate(df_forecast$Acres == case_when...' 得到 'data.frame': 22745 obs. of 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)
【问题讨论】:
-
仅在
case_when之前使用单个=,因为它是一个赋值运算符mutate(df_forecast$Acres = case_when......。此外,您还需要一个TRUE条件。 -
如果您可以分享一些数据,例如
dput(head(<YourData>))的输出,将会很有帮助。 -
ok: c(“1 月 10 日”、“1 月 10 日”、“1 月 10 日”、“1 月 10 日”、“1 月 10 日”、“1 月 10 日”)跨度>
-
原始CVS文件有这列数据为:“1/10/2019”
-
检查我的答案的更新。您是否将更改分配给
df_forecast-data.frame?在您对 Cettt 的评论中,它看起来不像