Bonjour,
J'ai 2 dataframes : (25000,66) et une table de seuil (10,2) contenant 10 groupes et le dernier id de chaque groupe.
Dans le grand ensemble de données, j'ai une variable appelée id
. C'est simplement id = numéro_de_ligne()
id
1
2
3
4
5
...
25000
EDIT : Beaucoup de réponses, merci pour toutes vos idées. En lisant, j'ai réalisé que j'avais oublié une étape importante dans la description de mes données et je m'en excuse.
Je suis en train d'utiliser un échantillonnage synthétique sur le grand ensemble de données
original pour générer de nouveaux points. Après échantillonnage, la colonne id
ressemble à ceci :
id
1
2
2.1
3
3.8
4.74
5.12
6
...
25000
C'est pourquoi j'ai utilisé la clause entre avec dernier_id
pour réaffecter les id à leur groupe.
Tableau des seuils :
dernier_id nom_groupe
50 grp1
1500 grp2
8900 grp3
...
25000 grp10
J'aimerais ajouter une nouvelle colonne au grand ensemble de données afin d'avoir l'id et le nom du groupe, basés uniquement sur la condition que l'id se situe dans la plage spécifiée par le tableau des seuils.
Pour l'instant, j'ai écrit ceci :
df <- df %>%
dplyr::mutate(group_name = case_when(id < dernier_id[1,1] ~ dernier_id[1,2],
between(id, dernier_id[1,1], dernier_id[2,1]) ~ dernier_id[2,2],
between(id, dernier_id[2,1], dernier_id[3,1]) ~ dernier_id[3,2],
between(id, dernier_id[3,1], dernier_id[4,1]) ~ dernier_id[4,2],
between(id, dernier_id[4,1], dernier_id[5,1]) ~ dernier_id[5,2],
between(id, dernier_id[5,1], dernier_id[6,1]) ~ dernier_id[6,2],
between(id, dernier_id[6,1], dernier_id[7,1]) ~ dernier_id[7,2],
between(id, dernier_id[7,1], dernier_id[8,1]) ~ dernier_id[8,2],
between(id, dernier_id[8,1], dernier_id[9,1]) ~ dernier_id[9,2],
id > dernier_id[9,1] ~ dernier_id[10,2]))
)
Mais cela ne fonctionne pas, j'obtiens cette erreur :
Erreur dans FUN(left, right) : comparaison (5) uniquement possible pour les types liste et atomique
De plus, ce code semble terrible, il doit y avoir une autre façon d'utiliser apply ou une autre fonction dplyr?
Merci de votre lecture.