如何使用R中的if或ifelse函数使用两个条件创建新值[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用R中的if或ifelse函数使用两个条件创建新值[关闭]相关的知识,希望对你有一定的参考价值。
我正在尝试在R中使用if()或ifelse()函数来创建新值。这是我的数据,如下所示,我的R版本是Windows的R 3.4.2(x64)。
Name Group
Apple A
Bee A
Can B
Dog B
Egg B
Can C
Dog C
Flow C
简而言之,我想做出如下结果。
Name Group Result
Apple A Red
Bee A Yellow
Can B Orange
Dog B Orange
Egg B Green
Can C Purple
Dog C Gray
Flow C Black
我在R中尝试了一些if和ifelse函数来制作我的结果。
df$Result <- NA
df$Result <- if(AND(Name=="Apple", Group=="A"), "Red", "Yellow")
df$Result <- if(OR(AND(Name=="Can", Group=="B")), AND(Name=="Dog", Group=="B")), "Orange", "Green")
df$Result <- ifelse(AND(Name=="Can", Group=="C"), "Purple",
ifelse(AND(Name=="Dog", Group=="C"), "Gray",
ifelse(AND(Name=="Flow", Group=="C"), "Black", NA)))
但是,显示了类似的错误。
Error: unexpected ',' in "df$Result <- if(AND(Name=="Apple", Group=="A"),"
In addition: Warning message:
In strsplit(code, "\n", fixed = TRUE) :
input string 1 is invalid in this locale
Error: unexpected ',' in "df$Result <- if(OR(AND(Name=="Can", Group=="B"), AND(Name=="Dog", Group=="B")),"
In addition: Warning message:
In strsplit(code, "\n", fixed = TRUE) :
input string 1 is invalid in this locale
Error in AND(Name=="Can", Group=="C") : could not find function "AND"
In addition: Warning message:
In strsplit(code, "\n", fixed = TRUE) :
input string 1 is invalid in this locale
我也用过这段代码。
df$Result <- if(AND(Name=="Apple", Group=="A"), print("Red"), print("Yellow"))
但是,它也没有用。此外,我想知道为什么'AND'功能在我使用ifelse()函数时不起作用。
有谁能帮助我,拜托?感谢您阅读我的问题。我需要你的帮助非常感谢。
答案
我们可以使用case_when
包中的dplyr
:
df$result <- case_when(
df$Name=="Apple" & df$Group=="A" ~ "Red",
df$Group=="A" ~ "Yellow",
(df$Name=="Can" | df$Name=="Dog") & df$Group=="B" ~ "Orange",
df$Group=="B" ~ "Green",
df$Name=="Can" & df$Group=="C" ~ "Purple",
df$Name=="Dog" & df$Group=="C" ~ "Gray",
df$Name=="Flow" & df$Group=="C" ~ "Black",
TRUE ~ NA
)
看起来您正在使用Excel语法。幸运的是,R可以提供一种略微清晰的方式来做到这一点。
以上是关于如何使用R中的if或ifelse函数使用两个条件创建新值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章