Sou novo em R e queria saber como usar uma maneira inteligente de primeiro aplicar uma função em duas colunas de um dataframe e depois filtrar por determinados critérios.
Então a lista inicial fica assim:
Amostra1 | Amostra2 | Irmãs | Valor |
---|---|---|---|
100_99 | 200_98 | Sim | 20 |
101_99 | 200_98 | Sim | 20 |
102_99 | 200_98 | Sim | 20 |
103_99 | 201_98 | Sim | 20 |
104_99 | 201_98 | Sim | 20 |
200_99 | 100_98 | Sim | 20 |
100_99 | 100_98 | Sim | 20 |
e eu quero que fique assim:
Amostra1 | Amostra2 | Irmãs | Valor |
---|---|---|---|
100_99 | 200_98 | Sim | 20 |
200_99 | 100_98 | Sim | 20 |
100_99 | 100_98 | Sim | 20 |
Eu também tenho uma matriz:
paraVerificar <- [100, 200]
O que eu quero fazer:
1º) Basta pegar o primeiro número da string (até o _) de ambas as strings nas colunas "Sample1" e "Sample2"
2º) Verifique se os números estão no array "toCheck"
3º) Mantenha todas as linhas que tenham um número em cada uma dessas colunas
Tentei muitas coisas e não sei se o piping é a opção correta: (Escrevi uma função que apenas pega o primeiro número da string)
qq <- df %>%
df $Sample1 <-lapply(df $Sample1, functionToJustTakeTheFirstNumber)
df $Sample2 <-lapply(df $Sample2, functionToJustTakeTheFirstNumber)
filter(Sample1 %in% toCheck && Sample2 %in% toCheck )
Eu sempre recebo mensagens de erro engraçadas como
Erro em match.fun(FUN) :
'df$Sample2' não é uma função, caractere ou símbolo
Uma abordagem pura do tidyverse seria usar
dplyr::filter
,dplyr::if_all
estringr::str_split_i
assim:DADOS