2017-10-13 8 views
1

Une trame de données qui est randomisée et triée à l'aide de la colonne Object est présentée ci-dessous à titre d'exemple. Le order est appliqué à sample uniquement pour organiser des objets similaires ensemble. Sera-t-il possible d'éviter l'opération order et d'obtenir la randomisation dans la colonne répétée Object? Merci.Randomize dataframe in r

set.seed(7) 
# read csv 
df <- read.csv("~/Documents/test.csv", header = T) 
df 
    Object Tag Comment 
1   1 A  C1 
2   1 B  C2 
3   1 C  C3 
4   1 D  C4 
5   2 A  A1 
6   2 C  A2 
7   2 F  A3 
8   2 G  A4 
9   3 P  C1 
10  3 N  A1 
11  3 P  B5 
# randomize the order of the df 
dfr <- df[sample(nrow(df)),] 
dfr 
    Object Tag Comment 
11  3 P  B5 
4  1 D  C4 
2  1 B  C2 
1  1 A  C1 
9  3 P  C1 
5  2 A  A1 
7  2 F  A3 
10  3 N  A1 
8  2 G  A4 
3  1 C  C3 
6  2 C  A2 
#sort dfr using Object field 
dfrSort <- dfr[with(dfr, order(Object)), ] 
dfrSort 
    Object Tag Comment 
4   1 D  C4 
2   1 B  C2 
1   1 A  C1 
3   1 C  C3 
5   2 A  A1 
7   2 F  A3 
8   2 G  A4 
6   2 C  A2 
11  3 P  B5 
9   3 P  C1 
10  3 N  A1 

Répondre

1

Après regroupement par « Objet » faire la sample tion de ne pas rompre les liens

library(dplyr) 
df %>% 
    group_by(Object) %>% 
    slice(sample(row_number())) 
# A tibble: 11 x 3 
# Groups: Object [3] 
# Object Tag Comment 
# <int> <chr> <chr> 
# 1  1  C  C3 
# 2  1  B  C2 
# 3  1  A  C1 
# 4  1  D  C4 
# 5  2  C  A2 
# 6  2  F  A3 
# 7  2  G  A4 
# 8  2  A  A1 
# 9  3  P  B5 
#10  3  P  C1 
#11  3  N  A1 
+0

Merci, mais les deux dernières colonnes doivent randomize ensemble (par paires) comme indiqué dans l'exemple. Pour 'Object 1 Tag D' devrait toujours être associé à' Comment C4', et ainsi de suite lorsqu'il est mélangé. La même chose est le cas pour les autres objets. – deepseefan

+0

Je crois que c'est. Coller à partir de ma question "La commande est appliquée à' sample' seulement pour organiser ensemble des objets similaires Est-il possible d'éviter l'opération 'order' et d'obtenir une randomisation dans la colonne Objet récurrente?" – deepseefan

+0

N'est-ce pas le but de donner? un exemple avec sortie d'échantillon requise? – deepseefan