Добавить данные в столбец на основе значений из других столбцов - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть набор данных, который выглядит следующим образом

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 голосов
/ 19 декабря 2018

Тидиверс решение:

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
0 голосов
/ 19 декабря 2018

Вы можете использовать два вложенных оператора 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...