r - 基于另一列中的变量填充 R [使用 if 语句?] 中的一列
问题描述
我正在努力解决的一个看似简单的任务:
我收集了行为数据并有一列(“行为”),我在其中记录了正在发生的行为。我想将这些行为分组并用类别名称填写一列(“BehaviorGroup”)。
这看起来如何的一个例子:
Behavior BehaviorGroup
bite aggressive contact
ram aggressive contact
avoid avoid
fast-approach aggressive approach
flee avoid
fast-approach aggressive approach
etc.
所以我想使用 Behavior 列下列出的行为(我已经有)来根据类别填写 BehaviorGroup 列(当前为空)。
对于上面的例子:“bite”和“ram”是“aggressive contact”,“avoid”和“flee”是“avoid”,“fast-approach”是“aggressive approach”
我还有很多,但我希望这足以开始如何处理代码来做到这一点!我将不胜感激任何和所有的帮助!
根据给出的示例,这是我将使用的代码:
Behavior <- c("bite", "ram", "avoid", "fast-approach", "flee", "fast-approach")
BehaviorGroup <- c("NA", "NA", "NA", "NA", "NA", "NA")
data.frame(Behavior,BehaviorGroup)
我只是想填写 BehaviorGroup 列。先感谢您!
解决方案
使用case_when
来自dplyr
library(tidyverse)
df %>%
mutate_if(is.factor, as.character) %>%
mutate(BehaviorGroup = case_when(Behavior %in% c("bite", "ram") ~ "aggressive contact",
Behavior %in% c("avoid", "flee") ~ "flee",
Behavior %in% c("fast-approach") ~ "aggressive approach"))
Behavior BehaviorGroup
1 bite aggressive contact
2 ram aggressive contact
3 avoid flee
4 fast-approach aggressive approach
5 flee flee
6 fast-approach aggressive approach
或者如果你喜欢base
和ifelse
df$BehaviorGroup <-ifelse(df$Behavior %in% c("bite", "ram"), "aggressive contact", NA)
df$BehaviorGroup[is.na(df$BehaviorGroup) == TRUE] <-ifelse(df$Behavior[is.na(df$BehaviorGroup) == TRUE] %in% c("avoid", "flee"), "flee", NA)
df$BehaviorGroup[is.na(df$BehaviorGroup) == TRUE] <-ifelse(df$Behavior[is.na(df$BehaviorGroup) == TRUE] %in% c("fast-approach"), "aggressive approach", NA)
df
Behavior BehaviorGroup
1 bite aggressive contact
2 ram aggressive contact
3 avoid flee
4 fast-approach aggressive approach
5 flee flee
6 fast-approach aggressive approach
推荐阅读
- javascript - 当我从另一个函数中使用它时,Javascript 排序不起作用
- python - 有没有办法将谷歌云存储中的 csv 文件中的数据加载到 datalab 中的单独变量中?
- security - 如果redis集群在aws私有网络中,需要为aws redis使用SSL需要多少?
- java - 片段中的 getArguments().getString() 返回 null
- c++ - 计算着色器有什么问题,以至于它的工作速度比顶点片段管道慢得多?
- python-3.x - 试图在 Python 3.7x 中实现列表理解
- properties - 如何在 scilab 中制作图形窗口模态?
- javascript - 带有 Vue.js 和 Ionic 侧边菜单的空白页面
- asp.net-mvc - 如何修复调用 com 组件的 hresult e_fail 错误?
- r - 在 JupiterLab 上安装 R 包时出现警告消息:“non_zero 退出状态”