我有一个数据集,看起来像这样
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中做到这一点吗?
谢谢!
答案 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