【问题标题】:R coding How to add a column and populate it based on values from two other columnsR编码如何添加一列并根据其他两列的值填充它
【发布时间】:2015-09-18 05:55:59
【问题描述】:

我有一个包含两列(选项 1 和选项 2)的表或数据框 (df9),并希望添加一个新列,该列基于以下逻辑填充前两列的值:

如果已填充选项 1(非空),则使用选项 1 值,否则,使用选项 2(无论是否为空)。

Choice1 = c("Blue","","White","")

Choice2 = c("Tomato","Apple","Banana","Peach")

df9 <- data.frame(Choice1,Choice2)

尝试了多种 if 语句均未成功,不确定如何在需要时通过表执行循环。谢谢。

【问题讨论】:

    标签: r if-statement


    【解决方案1】:

    转换为字符列会减轻很多痛苦。然后ifelse()。这里我使用nzchar()来判断非零字符元素。

    df9[] <- lapply(df9, as.character)
    within(df9, Choice3 <- ifelse(nzchar(Choice1), Choice1, Choice2))
    #   Choice1 Choice2 Choice3
    # 1    Blue  Tomato    Blue
    # 2           Apple   Apple
    # 3   White  Banana   White
    # 4           Peach   Peach
    

    或者只是

    df9$Choice3 <- with(df9, ifelse(nzchar(Choice1), Choice1, Choice2))
    

    请注意,如果您不转换为字符列,则根据您的示例数据,您将收到因子的整数值。

    【讨论】:

    • @PierreLafortune - base R 保存最完好的秘密之一。哈哈,不是真的
    • @peter 谢谢,它在我的真实数据上更好地与 df9$Choice3 线配合使用。 “within”代码行报错:“[达到getOption(“max.print”)--省略253218行]”
    猜你喜欢
    • 2021-06-19
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多