如果另一列中的值与该字符匹配,则创建将新列添加到列表的命令

时间:2017-06-22 20:55:16

标签: r

我有一个包含两列的类型列表数据集。我想编写一个命令,它将创建第三列,其中包含与第二列所需字符串相对应的值。第二列中所需的字符串是" notGene"。所以如果" notGene"出现在第二列中,我希望第一列中的相应值出现在新生成的第三列中。

1 个答案:

答案 0 :(得分:0)

我猜你正在寻找这样的东西:

data <- list(col1 = c("one", "two", "three"),
             col2 = c("hello", "contains notGene as text", "world"))
data$col3 = ifelse(grepl("notGene", data$col2, fixed = TRUE),
                   data$col1, NA_character_)

导致

> data
$col1
[1] "one"   "two"   "three"

$col2
[1] "hello"                    "contains notGene as text"
[3] "world"                   

$col3
[1] NA    "two" NA   

或更好的格式:

> as.data.frame(data)
   col1                     col2 col3
1   one                    hello <NA>
2   two contains notGene as text  two
3 three                    world <NA>