【问题标题】:A simple if else in R that creates a new column dependent on the resultR 中的一个简单 if else 创建一个依赖于结果的新列
【发布时间】:2015-10-21 05:19:07
【问题描述】:

我被困在 R 中应该相当简单的 if else 语句上。

我有一个名为UK 的数据框,其中包含几列,其中一列名为location,其中包含该行数据所属的英国城市的名称。

我的目标是创建一个名为capital 的新列,它将简单地将行分隔为二进制LondonUK ex London。我没有做很多 if else 语句,我正在努力使语法正确,我的尝试如下:

if (UK$location[UK$location == "London"]) UK$capital <- "London" else UK$capital <- "UK ex London"

如果不是最好的方法,我很乐意采用不同的方法。非常感谢您的帮助。

【问题讨论】:

    标签: r if-statement


    【解决方案1】:

    正如@thelatemail 指出的那样,一个简单的 Base R 解决方案是

    UK$capital <- ifelse(location=="London", "London","UK ex London")
    

    如果您开始构建更复杂的语句,那么我发现 dplyr 很有用,对于这个例子,解决方案是

    ## set up some data
    UK <- data.frame(location=c("London","Not London"), val=c("a","b"))
    
    library(dplyr)
    UK <- UK %>%
      mutate(capital = ifelse(location=="London", "London","UK ex London"))
    

    【讨论】:

    • 老实说,为什么在这里使用 dplyr?只需使用ifelse 和一个作业并完成它。没有分组、排序或其他操作,并且基本 R 版本到目前为止更简单。 UK$capital &lt;- ifelse(location=="London", "London","UK ex London")
    • 你没有使用它我同意。这只是 a 解决方案,如果 OP 要开始构建更复杂的语句以适合 dplyr,那么希望这会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2020-05-27
    • 2015-06-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多