0
votes

Sélectionnez des lignes basées sur une date et une autre condition dans R

Je souhaite sélectionner des sessions de clients spécifiques basées sur une date, mais je ne sais pas comment gérer cela. J'ai un DF avec toutes les sessions de clients et je veux faire deux nouveaux DF: une avec la première session de chaque client et une avec la deuxième session de chaque client. Quelle session est la première ou la seconde est basée à la date. Les sessionsID sont des nombres générés aléatoires, tout comme l'ID client.

Mes données ressemblent à: xxx

Je veux avoir une sortie pour le DF avec seulement la première session comme : xxx

et pour le DF avec les deuxième sessions telles que: xxx


0 commentaires

4 Réponses :


1
votes

A baser code> approche, xxx pré>

donne, p> xxx pré>

donne, p>

mydata <- read.table(text="Clientid     Sessionid     Date
    1             95738        13-03-2019
    1             61718        18-03-2019
    1             81289        19-03-2019
    1             89239        20-03-2019
    2             91298        13-02-2019
    2             12794        15-02-2019
    2             10083        16-02-2019
    3             90138        03-02-2019
    3             23128        06-02-2019",header=T)


7 commentaires

Lorsque j'utilise ce code: Index <- Commande (MyData [ 1]) [! Dupliqué (Trier (MyData [ 1]))] # Trouve la première occurrence. Je reçois cette erreur: erreur dans [. Data.frame (x, i): colonnes non définies sélectionnées


J'ai nommé les fausses données mydata . Avez-vous changé avec le vôtre?


Ouais j'ai fait. Je l'ai également essayé avec un sous-ensemble de mes données avec seulement la colonne client, session et date, mais je reçois toujours l'erreur.


Cela n'a aucun sens. MyData se produit deux fois dans la soluion. Premièrement, au début commande (mydata ... , et deuxième à l'intérieur Trier (myData ... Mais vous avez dit que vous l'avez fait. Avez-vous essayé de le courir Avec les fausses données que j'ai créées?


Ouais ça marche bien, mais quand je veux l'appliquer à mes données, cela ne fonctionne pas. La seule différence avec mes données est que la colonne ID de session est un personnage, mais je ne pense pas que le problème est vrai?


Nous ne faisons rien avec la colonne Session ID ici.


Je pense que j'ai peut-être le problème. Mon identifiant client est également des chiffres générés aléatoires et ne commencent pas par 1. Cela pourrait-il causer le problème?



0
votes

Ceci prend tout i em> la rangée d'identifiants et les répertorie dans des cadres de données.

dat <- structure(list(Client.id = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L), Session.id = c(95738L, 61718L, 81289L, 89239L, 91298L, 12794L, 
10083L, 90138L, 23128L), Date = c("13-03-2019", "18-03-2019", 
"19-03-2019", "20-03-2019", "13-02-2019", "15-02-2019", "16-02-2019", 
"03-02-2019", "06-02-2019")), class = "data.frame", row.names = c(NA, 
-9L))


0 commentaires

1
votes

Je pense que vous pouvez utiliser cette fonction: xxx

date_fun (df, 1) xxx

date_fun (df, 2) < / p> xxx

n_slice est le numéro de session


2 commentaires

Si j'exécute ce code: date_fun <-function (myData, 1) {résultat <-MyData%>% group_by (client)%>%>% arrangez (clientide, date)%>% SLICE (1) Retour (résultat)} Je reçois Ces erreurs: Erreur: constante numérique inattendue dans "Date_fun <-Function (MyData, 1" (MyData, 1 "": Aucune fonction à revenir de, sautant à l'erreur de niveau supérieur: inattendu '}' in "}"


C'est parce que vous avez supprimé N_SLICE de fonction (DF, N_SLICE). Mais ici, tranche (n_slice), vous avez laissé N_SLICE. La fonction fonctionne bien si vous l'appelez comme i Date_fun (DF, 1) ou Date_fun (DF, 2)



0
votes

Voici une approche de base r: xxx pré>

maintenant Vous pouvez maintenant sous-ensemble code> les données de la section de la session que vous souhaitez: p> xxx

DATA STRY> P>

df <- structure(list(Clientid = c(8972137L, 8972137L, 8972137L, 8972137L, 
56121278L, 56121278L, 56121278L, 13482932L, 13482932L), Sessionid = c(95738L, 
61718L, 81289L, 89239L, 91298L, 12794L, 10083L, 90138L, 23128L
), Date = c("13-03-2019", "18-03-2019", "19-03-2019", "20-03-2019", 
"13-02-2019", "15-02-2019", "16-02-2019", "03-02-2019", "06-02-2019"
)), class = "data.frame", row.names = c(NA, -9L))


0 commentaires