r dplyr::case_when Error: must be a character vector, not a double vector
r dplyr::case_when Error: must be a character vector, not a double vector
我正在尝试使用 dplyr::mutate 中的 dplyr::case_when 来替换一些值:
data<-data%>%
mutate(floor = case_when(
floor_id == 2 ~ "ground_floor",
floor_id == 3 ~ "mezzanine",
floor_id == 1 ~ "basement",
floor_id == 30 ~ "over_10",
floor==1 ~ 1,
floor==2 ~ 2,
floor==3 ~ 3,
floor==4 ~ 4,
floor==5 ~ 5,
floor==6 ~ 6,
floor==7 ~ 7,
floor==8 ~ 8,
floor==9 ~ 9,
floor==10 ~ 10,
TRUE ~ as.character(floor)))
我有一个错误
Error: must be a character vector, not a double vector
我有两个问题:
1)有谁知道如何更改代码来修复此错误?
2) 如果没有匹配的情况,则返回 NA,这就是为什么我添加所有这些行,如 floor==10 ~ 10。有什么办法可以减少代码的冗余度吗?
case_when
是类型严格的,这意味着您需要 return 相同类型的值。对于前几种情况,您 returning 值如 "ground-floor"、"mezzanine" 等,而后来您 returning 1、2 是数字,因此您会收到该错误。如果您将所有 return 值更改为“1”、“2”等字符值,那么它将起作用。
因为,您只是 returning floor
值,您可以通过以下方式减少代码:
library(dplyr)
data<- data%>%
mutate(floor = case_when(
floor_id == 2 ~ "ground_floor",
floor_id == 3 ~ "mezzanine",
floor_id == 1 ~ "basement",
floor_id == 30 ~ "over_10",
TRUE ~ as.character(floor)))
我正在尝试使用 dplyr::mutate 中的 dplyr::case_when 来替换一些值:
data<-data%>%
mutate(floor = case_when(
floor_id == 2 ~ "ground_floor",
floor_id == 3 ~ "mezzanine",
floor_id == 1 ~ "basement",
floor_id == 30 ~ "over_10",
floor==1 ~ 1,
floor==2 ~ 2,
floor==3 ~ 3,
floor==4 ~ 4,
floor==5 ~ 5,
floor==6 ~ 6,
floor==7 ~ 7,
floor==8 ~ 8,
floor==9 ~ 9,
floor==10 ~ 10,
TRUE ~ as.character(floor)))
我有一个错误
Error: must be a character vector, not a double vector
我有两个问题: 1)有谁知道如何更改代码来修复此错误? 2) 如果没有匹配的情况,则返回 NA,这就是为什么我添加所有这些行,如 floor==10 ~ 10。有什么办法可以减少代码的冗余度吗?
case_when
是类型严格的,这意味着您需要 return 相同类型的值。对于前几种情况,您 returning 值如 "ground-floor"、"mezzanine" 等,而后来您 returning 1、2 是数字,因此您会收到该错误。如果您将所有 return 值更改为“1”、“2”等字符值,那么它将起作用。因为,您只是 returning
floor
值,您可以通过以下方式减少代码:library(dplyr) data<- data%>% mutate(floor = case_when( floor_id == 2 ~ "ground_floor", floor_id == 3 ~ "mezzanine", floor_id == 1 ~ "basement", floor_id == 30 ~ "over_10", TRUE ~ as.character(floor)))