我有这个小标题(交易) 小标题:13×2
START_DATE CHANNEL_LVL1
<chr> <chr>
1 NA Website
2 2023-01-31 Website
3 NA WalkIn
4 2023-01-31 Marketplace
5 NA Marketplace
6 2023-01-31 Marketplace
7 2023-01-31 Call Center
8 2023-01-31 Marketplace
9 2023-01-31 Marketplace
10 NA WalkIn
11 2023-01-31 Website
12 2023-01-31 Website
13 2023-01-31 Marketplace
我想检查每一行
if( (is.na(START_DATE) && CHANNEL_LVL1 =="WalkIn")
。如果这是真的,我想用 NA
替换 date_to_set
。
我尝试过这个方法
transactions <- transactions %>%
mutate(
START_DATE = ifelse(is.na(START_DATE) & CHANNEL_LVL1 == "WalkIn", date_to_set, as.character(START_DATE)
)
它会产生此错误:
错误:!计算时出现问题
mutate()
。错误原因: !
START_DATE = ifelse(CHANNEL_LVL1 == "WalkIn" & is.na(START_DATE), date, START_DATE)
必须返回跨组兼容的向量。运行START_DATE
查看错误发生的位置。调用自:signal_abort(cnd, .file)
rlang::last_error()
我也尝试过case_when方法,但无济于事。
任何帮助将不胜感激!
以下作品:
transactions <- read.table(text="
START_DATE CHANNEL_LVL1
1 NA Website
2 2023-01-31 Website
3 NA WalkIn
4 2023-01-31 Marketplace
5 NA Marketplace
6 2023-01-31 Marketplace
7 2023-01-31 'Call Center'
8 2023-01-31 Marketplace
9 2023-01-31 Marketplace
10 NA WalkIn
11 2023-01-31 Website
12 2023-01-31 Website
13 2023-01-31 Marketplace", header=T)
date_to_set <- "2023-01-31"
transactions %>%
mutate(START_DATE = ifelse(is.na(START_DATE) & CHANNEL_LVL1 == "WalkIn", date_to_set, as.character(START_DATE)))
我从你的错误中猜测(“START_DATE必须返回跨组的兼容向量”)是你的数据框在你没有意识到的情况下被分组,或者也许date_to_set是不寻常的东西(你应该包括它)。