Cố gắng sử dụng dplyr
-group_by
biến stud_ID
trong khung dữ liệu sau đây, như trong this SO question:Cố gắng sử dụng dplyr để group_by và áp dụng quy mô()
> 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 ...
Tôi đã thử các sau đây để có được điểm theo thang đo của sinh viên (chứ không phải là điểm quy mô cho các quan sát trên tất cả các sinh viên):
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))
Dưới đây là kết quả:
> 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
Ba biến số được chia tỷ lệ (behavioral_scale
, cognitive_scale
và affective_scale
) chỉ có 12 quan sát - cùng một số quan sát cho học sinh đầu tiên, ABB112292
.
Điều gì đang xảy ra ở đây? Làm thế nào tôi có thể có được điểm số theo từng cá nhân?
Các bạn đã nhìn vào 'tóm tắt() 'trong' dplyr'? – count
Tôi nghĩ bạn nên thay đổi trước khi bạn nhóm, hoặc bạn sẽ tập trung điểm số của mỗi học sinh vào chính mình – C8H10N4O2
@ C8H10N4O2, do đó, mỗi quan sát của học sinh sẽ có M = 0 và SD = 1 –