r - 如何在 ifelse 命令中为 R 中的数据框编写多个“或”条件
问题描述
我对 R 比较陌生,我正在尝试向数据框(称为 dGroup)添加一列,这取决于数据框中现有列(物种)中指定的名称。有许多物种将属于要在 dGroup 列中指定的三个组中的每一个。这些是“Mus (Mouse)”或“Cerc (Possum)”应该在 dGroup 列中生成一个“SM”,“Tri (Brush tail)”或“Thyl (Wallaby)”或“Mac (Bennetts)”应该生成一个dGroup 列中的“MM”和“Mac (Bennetts)”应在 dGroup 列中生成“LM”。数据框如下所示:
|Record|Species| dGroup|
|------|--------|-------|
|1| Mus (Mouse)|
|2| Cerc (Possum)|
|3| Tri (Brush tail)
|4| Thyl (Wallaby)
|5| Vom (Wombat)
|6| Mac (Bennetts)
我使用的代码如下:#import csv 确保字符串保留
df <- read.csv(file = 'SH.csv', stringsAsFactors=FALSE)
#add a new column to the dataframe called dGroup
df['dGroup']<-NA
#test with a single species note: this code words
df$dGroup = ifelse(df$Species == "Mus (Mouse)","SM", "NA")
#test combine two species in an ‘or’ condition note: this code does not work
df$dGroup = ifelse(df$Species == "Mus (Mouse)"||df$Species=="Cerc ( Possum)"){"SM", “NA”)}
我收到以下错误:错误:任何人都可以帮忙吗?
解决方案
library(dplyr)
library(magrittr)
您可以在数据框中生成 ( ) 新变量 ( )case_when
时使用该命令mutate
dGroup
df <- df %>%
mutate(dGroup = case_when(Species == "Mus (Mouse)" ~ "SM",
Species == "Cerc (Possum)" ~ "SM"))
您可以继续填写其他物种的条件。这是一个很好的资源case_when
:https ://www.sharpsightlabs.com/blog/case-when-r/
推荐阅读
- deep-learning - 在一组连续数据中通过模式匹配发现异常检测
- nginx - 带有斜杠和查询参数的 Nginx Https 重定向
- javascript - 如何访问 ajax jsonp 结果数据以返回 true 或 false?
- extjs - 当我将记录添加到它喜欢的 Ext.data.Store 时,Ext.grid.Panel 不会更新
- neo4j - 在 Cypher 中查找连接节点组
- security - 詹金斯添加了指向仪表板的链接不起作用
- r - ggplot2中geom_text中的部分斜体标签
- ios - 如何将方法订阅到包含此方法的类之外的按钮触摸?
- java - 使用 java 和 iText 签署 PDF 哈希
- algorithm - 了解 RANSAC 优化