Versuchen mit dplyr zu group_by und anwenden scale()

Versuchen, zu verwenden dplyr zu group_by die stud_ID variable in der folgenden Daten-frame, wie in diese Frage ALSO:

> str(df)
'data.frame':   4136 obs. of  4 variables:
 $ stud_ID         : chr  "ABB112292" "ABB112292" "ABB112292" "ABB112292" ...
 $ behavioral_scale: num  3.5 4 3.5 3 3.5 2 NA NA 1 2 ...
 $ cognitive_scale : num  3.5 3 3 3 3.5 2 NA NA 1 1 ...
 $ affective_scale : num  2.5 3.5 3 3 2.5 2 NA NA 1 1.5 ...

Habe ich versucht, das folgende zu erhalten, Skalenwerte von Schüler (eher als Skalenwerte für die Beobachtungen über alle Studierenden):

scaled_data <- 
          df %>%
              group_by(stud_ID) %>%
                  mutate(behavioral_scale_ind = scale(behavioral_scale),
                         cognitive_scale_ind = scale(cognitive_scale),
                         affective_scale_ind = scale(affective_scale))

Hier ist das Ergebnis:

> str(scaled_data)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 4136 obs. of  7 variables:
 $ stud_ID             : chr  "ABB112292" "ABB112292" "ABB112292" "ABB112292" ...
 $ behavioral_scale    : num  3.5 4 3.5 3 3.5 2 NA NA 1 2 ...
 $ cognitive_scale     : num  3.5 3 3 3 3.5 2 NA NA 1 1 ...
 $ affective_scale     : num  2.5 3.5 3 3 2.5 2 NA NA 1 1.5 ...
 $ behavioral_scale_ind: num [1:12, 1] 0.64 1.174 0.64 0.107 0.64 ...
  ..- attr(*, "scaled:center")= num 2.9
  ..- attr(*, "scaled:scale")= num 0.937
 $ cognitive_scale_ind : num [1:12, 1] 1.17 0.64 0.64 0.64 1.17 ...
  ..- attr(*, "scaled:center")= num 2.4
  ..- attr(*, "scaled:scale")= num 0.937
 $ affective_scale_ind : num [1:12, 1] 0 1.28 0.64 0.64 0 ...
  ..- attr(*, "scaled:center")= num 2.5
  ..- attr(*, "scaled:scale")= num 0.782

Den drei skalierten Variablen (behavioral_scale, cognitive_scale, und affective_scale) haben nur 12 Beobachtungen - die gleiche Anzahl von Beobachtungen für die ersten Schüler, ABB112292.

Was ist denn hier Los? Wie kann ich erhalten, skaliert erreicht souverän durch die einzelnen?

  • Haben Sie sah in summarise() im dplyr ?
  • Ich denke, Sie sollten mutieren, bevor Sie die Gruppe, oder du gehst zur Mitte jeden Schüler die Punktzahl auf ihn/Sie selbst
  • auf ihn/Sie selbst, damit jeder Schüler die Beobachtungen wird M = 0 und SD = 1
  • OK ich bekomme es jetzt
Schreibe einen Kommentar