0 like 0 dislike

Bạn vui lòng hướng dẫn chi tiết hơn ý thứ ba được không? Tôi phân tích với phần mềm R, như vậy, sau khi đã có data thì vào R mình lọc, xếp nhóm hàng loạt và phân tích như thế nào?

related to an answer for: Câu hỏi mở trong phiếu khảo sát
in R by

1 Answer

0 like 0 dislike

Chủ yếu là bạn sẽ mã hóa lại biến số (recode), có rất nhiều cách khác nhau nhưng phụ thuộc rất nhiều vào cách nhập như đã nói ở câu trước.

Nếu giá trị là không biến đổi nhiều, bạn mã hóa lại thành biến số mới cho từng giá trị (từ khóa), v.d.

#R
data$mahoa[data$bientext == "tu khoa 1"] <- 1
data$mahoa[data$bientext == "tu khoa 2"] <- 2
...

Nhược điểm là phải gõ chính xác từ khóa và nếu một giá trị chứa nhiều từ khóa thì không được. Để tìm giá trị tương đối của từ khóa dùng regex (regular expression) để phần mềm tự động tìm và phân loại những từ khóa khớp với cấu trúc từ mình chọn, v.d.

#Tìm regex của từ khóa
> glob2rx('tukhoa') # Tìm giá trị chứa chính xác 'tukhoa'
[1] "^tukhoa$"
> glob2rx('tukhoa*') # Tìm giá trị bắt đầu với 'tukhoa', vd 'tukhoa123'
[1] "^tukhoa"
> glob2rx('*tukhoa*') # Tìm giá trị có chứa 'tukhoa', vd 'abctukhoa123'
[1] "^.*tukhoa"

Để viết nhanh bạn có thể học thêm cách viết ở đây. Tiếp theo, cách đơn giản nhất là viết một vòng lặp để tìm từng hàng và trả về giá trị định trước, v.d. code R sau để mã hóa lại biến số nghề nghiệp, bạn có thể tìm hiểu và thay thế tương ứng.

#R
data <- data.frame(nghe = c("hoc sinh","hoc sinh cap 2","sinh vien","noi tro, that nghiep","o nha","that nghiep"))
> data
                  nghe
1             hoc sinh
2       hoc sinh cap 2
3            sinh vien
4 noi tro, that nghiep
5                o nha
6          that nghiep
# Ta thấy hoc sinh và hoc sinh cap 2 có thể gom, tương tự that nghiep,...
n <- dim(data)[1] # Cỡ mẫu
# Tìm mẫu 2 từ
tu1  <- glob2rx('*hoc sinh*')
tu2  <- glob2rx('*that nghiep*')
# ...
# tu_n <- glob2rx('tu thu n') # từ thứ n
for (i in 1:n) {
  data$mahoa[i] <- ifelse(grepl(tu1,data$nghe[i]),1,NA)
  data$mahoa[i] <- ifelse(grepl(tu2,data$nghe[i]),2,data$mahoa[i])
  # Lưu ý chỉ có tu1 là NA
  # data$mahoa[i] <- ifelse(grepl(tu_n,data$nghe[i]),2,data$mahoa[i])
}
> data
                  nghe mahoa
1             hoc sinh     1
2       hoc sinh cap 2     1
3            sinh vien    NA
4 noi tro, that nghiep     2
5                o nha    NA
6          that nghiep     2
by (100 points)
Đếm số phần tử trong R

Related questions

0 like 0 dislike
2 answers
0 like 0 dislike
1 answer
asked Aug 18, 2014 in R by anonymous | 500 views
0 like 0 dislike
1 answer
0 like 0 dislike
1 answer
0 like 0 dislike
0 answers
asked Jul 19, 2013 in R by anonymous | 1.2k views