R中基于dataframe多列条件生成Completion Rate新列的问题
错误原因
你之前的代码报错核心有三点:
- R base 内置的
replace()函数仅支持3个传入参数,你额外多传了第四个参数,直接触发未使用参数的报错 - 带空格的列名需要用反引号
`包裹,使用双引号会被识别为普通字符串而非数据框列 Responded是字符型列,存储的是"0%"字符串而非数字0,判断条件需匹配字符格式
正确实现(一步完成,无需提前创建新列)
推荐用dplyr的if_else()实现,逻辑清晰不易出错:
library(dplyr) df <- df %>% mutate(`Completion Rate` = if_else( condition = Responded == "0%", true = NA_character_, false = `Response Rate` ))
如果偏好使用replace()写法,正确格式如下:
df <- df %>% mutate(`Completion Rate` = replace( x = `Response Rate`, list = Responded == "0%", values = NA_character_ ))
注意事项
因为Response Rate是字符类型,空值必须使用NA_character_而非通用NA,避免类型不匹配的潜在报错。运行后调用head(df)即可得到你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者Dee G
相关产品推荐
相关产品推荐

