如何使用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函数使用两个条件创建新值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

R语言IfElse条件语句实战

R语言中的if else语句

R mutate ifelse更新带有计算函数值的条件行

根据R中的条件合并列

r R ifelse()中的条件语句

如何在 jest node.js 中测试 if else 条件