根据其他列中的值将数据添加到列中

时间:2018-12-19 17:31:31

标签: r if-statement conditional-statements

我有一个数据集,看起来像这样

Col1  Col2  Col3
A       B    NA
AA      C    NA
D       CC   NA
E       F    NA

我想根据条件将数据添加到col3。如果col1和col2各自只有一个字母,请输入“ SNP”。如果col1有多个字母,请写“ DEL”,如果col2有多个字母,请写“ INS”

最终产品将是:

Col1  Col2  Col3
A       B    SNP
AA      C    DEL
D       CC   INS
E       F    SNP

任何人都知道如何在R中做到这一点吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用两个嵌套的ifelse语句。 因此,例如,使用dplyr::mutate

library(dplyr)
df = df %>% mutate(Col3 = ifelse(nchar(Col1)>1,"DEL",ifelse(nchar(Col2)>1,"INS","SNP")))

  Col1 Col2 Col3
1    A    B  SNP
2   AA    C  DEL
3    D   CC  INS
4    E    F  SNP

答案 1 :(得分:1)

tidyverse解决方案:

library(magrittr); library(dplyr); library(stringr)

df %>% mutate(Col3 = case_when(str_length(Col1) == 1 & str_length(Col2) == 1 ~ "SNP",
                                 str_length(Col1) > 1 ~ "DEL",
                                 str_length(Col2) > 1 ~ "INS")
                )

  Col1 Col2 Col3
1    A    B  SNP
2   AA    C  DEL
3    D   CC  INS
4    E    F  SNP