mutate和case_when分配错误的值

时间:2019-06-23 23:12:15

标签: r dplyr

我无法为自己的一生弄清楚这段代码出了什么问题。当dom-if为1-63时,代码将分配dom-repeat,但其他所有内容都将分配为frameNum

anticipatory

这里的代码可以复制:

NA

1 个答案:

答案 0 :(得分:2)

1。 ==需要替换为%in%,并且

2。 NA需要替换为NA_character_

错误"Error: must be a character vector, not a logical vector"是由于第二个错误。

total_s2_data <- total_s2_data %>%
  mutate(frame_cat = case_when(
    frameNum %in% c(1:63, 120:193, 488:543, 580:625) ~ "anticipatory",
    frameNum %in% c(64:69, 194:219, 544:563, 626:653) ~ "phone",
    frameNum %in% c(70:193, 220:297, 564:625, 654:725) ~ "carryover",
    TRUE ~ NA_character_)
  )

 head(total_s2_data)
#   frameNum    frame_cat
#1        1 anticipatory
#2        2 anticipatory
#3        3 anticipatory
#4        4 anticipatory
#5        5 anticipatory
#6        6 anticipatory