首页 > 解决方案 > 在数据框中应用列表条件块

问题描述

我正在尝试将一些新条件应用于现有数据框(如下所示)。我无法使用ifelse,因为逻辑是这样的:

  1. 如果 count<=3:保持原样
  2. 如果计数>3:
    • 如果代码 != "OFF15",c = "OK10" 否则 c = "OFF15"
  3. 如果计数 > 3 且代码为 NA:代码 = "OK10"

使用 ifelse 时无法生成第三个条件

Code = c("OFF15","OFF5",NA,"OFF5",NA)
count= c(3,4,4,2,1)
x= data.frame(Code,count)

我不能使用 ifelse 因为有嵌套列表。我的预期是:

Code    Count
OFF15     3
OK10      2
OK10      3
OFF5      2
NA        1

标签: rdata-sciencedata-wrangling

解决方案


你可以使用dplyr

library(dplyr)

df %>% 
  mutate(Code = case_when(count < 3 ~ Code,
                          count > 3 & Code != "OFF15" ~ "OK10",
                          TRUE ~ "OFF15"))

这返回

   Code count
1 OFF15     3
2  OK10     4
3 OFF15     3
4  OFF5     2
5  <NA>     1

注意:我命名了 data.framedf而不是x.


推荐阅读