<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai un ensemble de données avec plusieurs échantillons et chaque échantillon contient 10 à 30 mesures dans des lignes séparées. Je veux pouvoir attribuer une valeur aléatoire de 1 au nombre de mesures pour chaque échantillon. Je peux utiliser Col Shuffle pour randomiser, mais cela nécessite de diviser les données en plusieurs tableaux et d'appliquer une formule à chaque sous-ensemble avant de mettre à jour la table d'origine avec les nombres aléatoires. Existe-t-il une méthode pour faire cela avec une seule équation ?
Cela a fonctionné merci !
Essayez quelque chose comme ceci :
// Crée une table de test
dt = Nouveau tableau ( "Exemples de mesures" , Ajouter des lignes ( 13 ) ,
Nouvelle colonne ( "Échantillon" , Personnage , Nominal , Définir les valeurs (
{ "UN" , "UN" , "UN" , "UN" , "UN" , "B" , "B" , "B" , "C" , "C" , "C" , "C" , "C" } ) ) ,
Nouvelle colonne ( "La mesure" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir les valeurs ( [ 65 , 76 , 23 , 43 , 67 , 65 , 546 , 34 , 64 , 76 , 32 , 67 , 88 ] )
) ,
) ;
// Ajout d'une colonne aléatoire
dt << Nouvelle colonne ( "Valeur aléatoire" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Formule ( Uniforme aléatoire () ) ) ;
// trier
dt << trier ( remplacer le tableau , par ( : Échantillon , : Valeur aléatoire )) ;
// Ajout d'une colonne de séquence
dt << nouvelle colonne ( "Séquence" , numérique , continu ) ;
// Ajouter des valeurs de séquence
ancienne_valeur = "XYZZ" ;
pour ( je = 1 , je <= nrows ( dt ) , je ++,
valeur_échantillon = dt : échantillon [ je ] ;
si ( valeur_échantillon != ancienne_valeur ,
ancienne_valeur = valeur_échantillon ;
k = 1 ;
) ;
dt : séquence [ je ] = k ;
k ++ ;
) ;
J'ai supposé 2 colonnes, 1 échantillon nommé et 1 valeurs nommées.
dt = tableau de données actuel () ;
échantillons = Tableau associatif ( : Échantillon ) ;
dt << Trier ( Par ( : Échantillon ) , remplacer le tableau ) ;
pour ( je = 1 , je <= Articles ( échantillons ) , je ++,
Lignes = dt << obtenir des lignes où ( : Échantillon == échantillons [ je ]) ;
start_row = min ( Lignes ) ;
fin_ligne = maximum ( Lignes ) ;
échantillons [ je ] = : Valeurs [ Entier aléatoire ( start_row , fin_ligne )] ;
) ;
montrer ( échantillons );