r - 在数据框中应用列表条件块
问题描述
我正在尝试将一些新条件应用于现有数据框(如下所示)。我无法使用ifelse
,因为逻辑是这样的:
- 如果 count<=3:保持原样
- 如果计数>3:
- 如果代码 != "OFF15",c = "OK10" 否则 c = "OFF15"
- 如果计数 > 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
解决方案
你可以使用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
.
推荐阅读
- azure-active-directory - 为什么 Azure B2C 返回不是 jwt 的 idp_access_token?
- nlp - 词频数据库与感官
- ruby-on-rails - ActsAsTaggableOn 将标签添加到对象
- spring - 注入导致不完全构造的对象
- openssl - 为什么签署 CSR 需要指定 CA 证书
- r - 如何将函数应用于 r 中 data.table 中过滤数据的特定部分
- javascript - 具有 HTML 元素属性/属性的 LitElement Dot
- python - 在python中创建列表而不提及它?
- python - 取方形脉冲下的面积
- algorithm - 如何生成谜题来“破解密码”?