Comme vous recherchez une ligne où il y a un 0 suivi d'un caractère non nul, il est possible de le faire en utilisant regex. La fonction retourne grepl
un vecteur VRAI/FAUX selon que le pattern
spécifié est adapté:
examples <- c("100", "000", "001")
grepl(pattern = "0[1-9]", x = examples)
## [1] FALSE FALSE TRUE
Cette regex semble explicitement un chiffre 1-9 après un zéro, il vous vouliez ne importe quel caractère possible autre qu'un zéro vous En utilisant la bibliothèque dplyr
, qui est chargée en appelant library("tidyverse")
, il est très simple de concaténer les colonnes d'intérêt, puis d'appliquer notre regex à cette nouvelle colonne.
D'abord, enregistrez ce qui suit comme .csv
Company.Name, semences, série.Un, Series.B, Series.C, Series.D, Series.E, Series.F, Series.G , Série.H Aetion, 0,1,0,0,0,0,0,0,0 Aspier Healt, 1,0,1,0,0,0,0,0,0 Evariant, 0, 1,1,2,0,0,0,0,0 iHealth, 0,0,0,0,0,0,0,0,0 Inuition Robotique, 0,0,0,0,0,0 , 0,0,0 Kali Care, 0,0,0,0,0,0,0,0,0 Réseau Locum, 0,0,1,0,0,0,0,0,0 Martin Société, 0, 0, 0, 0, 0, 0, 0, 0, 1 Autre société, 1, 1, 1, 2, 1, 3, 6, 7, 9 Weird Company, 0, 0, 0 , 0, m, 0, 0, 0, 0
ensuite importer les données à l'aide read_csv:
library("tidyverse")
example_data <- read_csv("example_data.csv")
Maintenant, nous allons créer une nouvelle colonne contenant la concaténation des lignes Seed: Series.H
example_data <- example_data %>%
mutate(test_col = paste0(Seed,
Series.A,
Series.B,
Series.C,
Series.D,
Series.E,
Series.F,
Series.G,
Series.H))
Jetons un coup d'œil à la nouvelle valeur de la colonne pour la première ligne:
example_data %>%
select(test_col) %>%
slice(1)
## 010000000
Ok! Il y a donc un caractère non nul à droite d'un zéro! Donc cette ligne devrait être incluse dans la sortie.
Nous pouvons utiliser le verbe mutate
pour appliquer le test grepl
sur toutes les lignes d'une nouvelle colonne appelée include. Imprimons sur l'ensemble de cette colonne pour voir quelles lignes correspondent à votre état:
example_data %>%
mutate(include = grepl("0[1-9]", test_col)) %>%
select(include)
## output
# A tibble: 10 x 1
include
<lgl>
1 TRUE
2 TRUE
3 TRUE
4 FALSE
5 FALSE
6 FALSE
7 TRUE
8 TRUE
9 FALSE
10 FALSE
Pour filtrer uniquement les lignes où la condition est vrai que nous utilisons le verbe filter
:
example_data %>%
mutate(include = grepl("0[1-9]", test_col)) %>%
filter(include)
Bien sûr, nous avons maintenant deux colonnes dans vos données que vous ne voulez pas! Alors écrivez tout cela de manière concise:
example_data %>%
mutate(test_col = paste0(Seed,
Series.A,
Series.B,
Series.C,
Series.D,
Series.E,
Series.F,
Series.G,
Series.H),
include = grepl("0[1-9]", test_col)) %>%
filter(include) %>%
select(-include, -test_col)
pourquoi voudriez-vous abandonner la ligne 1? Je ne comprends pas votre condition "a 1 1 1 0 0 0, ou quelque chose de similaire" –
pourriez-vous énoncer les conditions en termes plus clairs. "quelque chose de similaire" n'est pas particulièrement utile. –
Oui, je viens d'éditer le post principal. Fondamentalement, s'il y a une cellule dans la rangée qui est une valeur différente de zéro, et qu'il y a une valeur nulle à gauche de celle-ci, je veux la garder. Tout le reste devrait être supprimé. Excusez-moi de ne pas avoir été clair. – Mason