【问题标题】:R adding a new column and populating it with string values based on multiple conditionR添加一个新列并使用基于多个条件的字符串值填充它
【发布时间】:2019-08-23 07:48:12
【问题描述】:

我正在 R 中编写代码以添加一个新列,其中需要根据两个条件填充值。问题是有两列“等级”和“功能级别”。每个等级都有多个功能级别。 例如,如果存在等级“A”,则等级 A 的功能级别为 f1、f2、f3。现在我需要按以下方式填充一个名为“combination_of_rank_and_functionallevel”的列:

if rank = A and functional_level = f1,
    then  combination_of_rank_and_functionallevel = A1

else if rank = A and functional_level = f2,
    then combination_of_rank_and_functionallevel = A2

else if rank = B and functional_level = f4,
     then combination_of_rank_and_functionallevel = B4

等等……

我用 R 编写了一段代码来执行这个逻辑。代码被执行,但新列没有填充新值。我正在分享下面的代码。

if(df$Rank == "A" & df$Function.level == "F1"){
    df$combination_of_rank_and_FL = "A 1" 
  }else if (df$Rank == "A" & df$Function.level == "F2"){
    df$combination_of_rank_and_FL = "A 2"
  }else if (df$Rank == "A" & df$Function.level == "F3"){
    df$combination_of_rank_and_FL = "A 3"
  }else {
    df$combination_of_rank_and_FL = "To be removed from analysis"
  }
}

因此,当条件满足时,应该填充新列“combination_of_rank_and_FL”。

【问题讨论】:

标签: r if-statement multiple-conditions


【解决方案1】:

假设您的 data.frame 被称为“df”并且您的列“rank”和“functional level”分别具有索引 i 和 j,我将在您的 data.frame 上运行 apply() 循环

df$new.column <- apply(df, 1, function(x){paste0(x[i], gsub("f","", x[j]))}

这会将列粘贴在一起,gsub() 在粘贴之前从第二列中删除“f”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多