Recode into Different Variables: mã hóa lại biến mà vẫn giữ dữ liệu gốc là bài 13 của chuyên đề SPSS trong phân tích dữ liệu BĐS. Tạo biến nhóm hoặc đảo chiều câu hỏi bằng Recode into Different Variables, giữ nguyên biến gốc và lưu rõ ngưỡng/mapping.
Biên soạn: ThS. Nguyễn Mạnh Hùng
GV. Khoa QLĐĐ&BĐS – ĐH Nông Lâm TP.HCM
Email: nguyenmanhhung@hcmuaf.edu.vn
Cập nhật 01/10/2026: Nội dung đối chiếu với IBM SPSS Statistics 31 và các tài liệu phương pháp nêu ở cuối bài. Dữ liệu BĐS trong ví dụ là giả lập phục vụ giảng dạy, trừ khi ghi rõ nguồn khác.
Vị trí của bài trong mạch học
Bài thuộc Chương 2 – Nhập, chuẩn hóa và làm sạch dữ liệu. Mục tiêu là làm dữ liệu đáng tin và có thể truy vết trước khi bước sang thống kê mô tả. Bài nối trực tiếp quy tắc ở Bài 1–10: hiểu mỗi dòng, mỗi cột và thuộc tính biến trước khi bấm Analyze.
1. Giữ biến gốc
Different Variables cho phép tạo biến mới, giúp kiểm lại và thay đổi quy tắc sau này.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
2. Chỉ phân nhóm khi cần
Chia biến liên tục làm mất thông tin; ngưỡng phải có mục đích nghiên cứu.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
3. Output Variable và Change
Cần đặt tên/label biến mới và bấm Change trước khi khai Old and New Values.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
4. Khoảng và điểm biên
Range có biên; phải tránh khoảng chồng hoặc khoảng hở.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
5. All other values
Phải quyết định copy, missing hay mapping khác thay vì để mơ hồ.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
6. Recode missing không phải bù dữ liệu
Đổi 99 sang system-missing chỉ đổi biểu diễn, không tạo thông tin mới.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
7. Đảo chiều thang đo
1↔5, 2↔4... chỉ dùng cho item được thiết kế ngược.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
8. Kiểu dữ liệu
Numeric/string có quy tắc riêng; không dùng Recode để che lỗi Type chưa hiểu.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
9. Kiểm sau Recode
Frequencies và case ở điểm biên giúp phát hiện mapping sai.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
10. Lưu Syntax/codebook
Biến nhom_gia chỉ có ý nghĩa khi người khác biết ngưỡng và version.
Liên hệ BĐS: với giá, diện tích, khu vực, loại hình hoặc dữ liệu khảo sát, một thao tác đúng kỹ thuật vẫn có thể tạo kết quả sai nghĩa nếu đơn vị quan sát, mã hóa, missing hoặc phạm vi mẫu chưa được kiểm. Vì vậy sau mỗi thao tác phải đối chiếu với codebook và ít nhất một số case cụ thể.
Cách tự kiểm: lưu trạng thái trước thao tác, chạy công cụ, ghi N/giá trị đầu ra, rồi kiểm ngược 5–10 dòng. Nếu không giải thích được vì sao một case được giữ, đổi nhóm, trở thành missing hoặc xuất hiện trong Output, chưa chuyển bước.
Bộ dữ liệu thực hành xuyên suốt
Các bài 11–20 dùng một cấu trúc BĐS thống nhất để tập trung vào phương pháp. Có thể thay bằng dữ liệu thật nếu giữ đúng ý nghĩa biến, đơn vị và yêu cầu bảo mật.
| Tên biến | Kiểu | Ý nghĩa | Mã/đơn vị | Measure |
|---|---|---|---|---|
| ma_bds | String | Mã quan sát/tài sản | — | Nominal |
| khu_vuc | Numeric | Khu vực | 1=Trung tâm; 2=Cận trung tâm; 3=Ngoại vi | Nominal |
| loai_bds | Numeric | Loại BĐS | 1=Căn hộ; 2=Nhà phố; 3=Đất ở | Nominal |
| dien_tich | Numeric | Diện tích | m² | Scale |
| gia_rao | Numeric | Giá rao | triệu đồng | Scale |
| gia_m2 | Numeric | Đơn giá | triệu đồng/m² | Scale |
| khoang_cach_tam | Numeric | Khoảng cách | km | Scale |
| nam_xay_dung | Numeric | Năm xây dựng | năm | Scale |
| muc_hai_long | Numeric | Mức hài lòng | 1–5; 99=không trả lời nếu đã khai Missing | Ordinal |
| y_dinh_mua | Numeric | Ý định mua | 1–5; 99=không trả lời nếu đã khai Missing | Ordinal |
Cú pháp tham khảo
Nên bấm Paste ở hộp thoại quan trọng để lưu dấu vết thao tác. Syntax dưới đây minh họa logic của bài và cần đổi tên biến theo tệp thực tế.
RECODE dien_tich (Lowest THRU 49.999=1) (50 THRU 79.999=2) (80 THRU Highest=3) INTO nhom_dien_tich. VALUE LABELS nhom_dien_tich 1 'Duoi 50 m2' 2 '50 den duoi 80 m2' 3 'Tu 80 m2 tro len'. RECODE q3 (1=5)(2=4)(3=3)(4=2)(5=1)(ELSE=COPY) INTO q3_r.Tình huống thực hành BĐS
Sinh viên dùng Recode into Same Variables để chia diện tích rồi mất m² gốc. Khi ngưỡng đổi từ 70 sang 80 không còn dữ liệu chi tiết để kiểm. Bản sửa tạo nhom_dien_tich mới, lưu Syntax và codebook.
Trong tình huống này, sinh viên phải tách ba việc: phát hiện – xác minh – xử lý. Không được nhảy từ phát hiện sang xóa/sửa khi chưa có căn cứ từ nguồn, codebook hoặc quy tắc nghiên cứu.
Ma trận lựa chọn nhanh
| Tình huống | Cách hiểu/công cụ | Điểm phải kiểm |
|---|---|---|
| dien_tich | Giữ gốc Scale | Không mất chi tiết |
| nhom_dien_tich | Biến mới Ordinal | Ngưỡng có nguồn |
| q3_r | Item đảo chiều | Chỉ item thiết kế ngược |
| 99 missing | Giữ thiếu | Không đổi thành 3 |
| Mã chuỗi | Mapping exact | Kiểm khoảng trắng |
Bài thực hành
Tạo nhóm diện tích, nhóm giá và một item đảo chiều; giữ biến gốc, kiểm Frequencies và case ở biên.
Sản phẩm phải nộp
- Ba biến mới
- Syntax Recode
- Codebook ngưỡng
- Output Frequencies
- Bảng kiểm điểm biên
Những lỗi thường gặp
- Recode into Same Variables
- Chia nhóm tùy tiện
- Khoảng chồng/hở
- Quên Change
- Không khai Value Labels
- Đảo chiều sai item
Sổ tay thao tác nhanh
- Lưu bản trước thao tác bằng tên version rõ.
- Kiểm Type, Values, Missing, Measure của biến dùng.
- Viết câu hỏi cần trả lời trước khi mở menu.
- Thực hiện và Paste Syntax nếu quy tắc/công thức phức tạp.
- Kiểm N trước–sau và 5–10 case cụ thể.
- Đối chiếu Output với nguồn; không chỉ nhìn bảng đẹp.
- Ghi lỗi/quyết định/lý do vào biên bản QA.
- Save As bản mới, không overwrite nguồn duy nhất.
Phản biện chéo tại lớp
Một nhóm thao tác; nhóm còn lại hỏi về dữ liệu đầu vào, đơn vị quan sát, biến được dùng, thuộc tính biến, tác động của thao tác tới hàng/cột/giá trị và tình huống có thể làm kết quả sai. Người thực hiện phải giải thích được cả thao tác và ý nghĩa.
Sau phản biện, ghi ba điểm: điều làm đúng, lỗi/rủi ro phát hiện và biện pháp ngăn lỗi lặp lại.
Tình huống kiểm tra cuối bài
Giảng viên giao tệp 300–600 case có vấn đề liên quan trực tiếp đến Recode into Different Variables: mã hóa lại biến mà vẫn giữ dữ liệu gốc. Sinh viên ghi trạng thái ban đầu, quy tắc kiểm, thao tác, Output/Syntax và bảng trước–sau. Điểm dựa cả vào lý do, không chỉ kết quả cuối.
Phiếu tự kiểm
- Tôi có giữ bản dữ liệu gốc/bản trước thao tác không?
- Tôi có hiểu mỗi dòng và mỗi biến đại diện cho gì không?
- Type, Values, Missing, Measure của biến chính có đúng không?
- Tôi có ghi điều kiện/công thức/ngưỡng thay vì sửa cảm tính không?
- N trước và sau thao tác có hợp lý không?
- Tôi có kiểm 5–10 case cụ thể không?
- Tôi có vô tình xóa/overwrite dữ liệu không?
- Output có category/missing/đơn vị bất thường không?
- Syntax/biên bản có đủ để tái hiện không?
- Tôi có phân biệt mô tả với suy luận không?
- Tôi có ghi giới hạn của thao tác không?
- Tệp sau xử lý có version rõ không?
Ghi nhớ trong 30 giây
- Ưu tiên Different Variables
- Chỉ phân nhóm khi có mục đích
- Ngưỡng phải có căn cứ
- Missing không thành mức hợp lệ
- Luôn kiểm tần số/biên
Nguồn tham khảo
Nguồn kỹ thuật chính là IBM SPSS Statistics 31; nguồn phương pháp bổ sung dùng để giải thích cách đọc thống kê/đồ thị. Khi menu trên máy khác bài, đối chiếu đúng phiên bản SPSS đang sử dụng.
- https://www.ibm.com/docs/SSLVMB_31.0.0/pdf/IBM_SPSS_Statistics_Core_System_User_Guide.pdf
- https://www.ibm.com/docs/en/spss-statistics/30.0.0?topic=transformations-recode-into-different-variables
- https://www.ibm.com/docs/en/SSLVMB_31.0.0/pdf/IBM_SPSS_Statistics_Command_Syntax_Reference.pdf
Bài tiếp theo
Compute Variable: tạo đơn giá, nhóm tuổi, điểm tổng và biến dẫn xuất thế nào?.
Bài luyện tập mở rộng
Luyện tập 1: Giữ biến gốc
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Giữ biến gốc và Chỉ phân nhóm khi cần. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao different variables cho phép tạo biến mới, giúp kiểm lại và thay đổi quy tắc sau này. Đồng thời đối chiếu với nguyên tắc thứ hai: chia biến liên tục làm mất thông tin; ngưỡng phải có mục đích nghiên cứu. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 2: Output Variable và Change
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Output Variable và Change và Khoảng và điểm biên. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao cần đặt tên/label biến mới và bấm change trước khi khai old and new values. Đồng thời đối chiếu với nguyên tắc thứ hai: range có biên; phải tránh khoảng chồng hoặc khoảng hở. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 3: All other values
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến All other values và Recode missing không phải bù dữ liệu. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao phải quyết định copy, missing hay mapping khác thay vì để mơ hồ. Đồng thời đối chiếu với nguyên tắc thứ hai: đổi 99 sang system-missing chỉ đổi biểu diễn, không tạo thông tin mới. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 4: Đảo chiều thang đo
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Đảo chiều thang đo và Kiểu dữ liệu. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao 1↔5, 2↔4... chỉ dùng cho item được thiết kế ngược. Đồng thời đối chiếu với nguyên tắc thứ hai: numeric/string có quy tắc riêng; không dùng recode để che lỗi type chưa hiểu. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 5: Kiểm sau Recode
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Kiểm sau Recode và Lưu Syntax/codebook. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao frequencies và case ở điểm biên giúp phát hiện mapping sai. Đồng thời đối chiếu với nguyên tắc thứ hai: biến nhom_gia chỉ có ý nghĩa khi người khác biết ngưỡng và version. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Luyện tập 6: Giữ biến gốc
Tạo một bản dữ liệu nhỏ có vấn đề liên quan đến Giữ biến gốc và Chỉ phân nhóm khi cần. Trước khi thao tác, viết dự đoán về N hoặc cấu trúc kết quả. Thực hiện đúng công cụ của bài, lưu Output/Syntax và kiểm lại bằng ít nhất 5 case.
Phần giải thích: trình bày 120–180 từ về vì sao different variables cho phép tạo biến mới, giúp kiểm lại và thay đổi quy tắc sau này. Đồng thời đối chiếu với nguyên tắc thứ hai: chia biến liên tục làm mất thông tin; ngưỡng phải có mục đích nghiên cứu. Nếu kết quả khác dự đoán, xác định chênh lệch do dữ liệu hay do thao tác.
Biên bản QA tối thiểu
| Mục | Trước | Quy tắc/thao tác | Sau | Xác nhận |
|---|---|---|---|---|
| Số case | Ghi N | Theo đúng mục tiêu | Ghi N sau | Hợp lý |
| Biến chính | Type/Measure | Kiểm thuộc tính | Không đổi ngoài ý muốn | Đạt/không đạt |
| Missing/category | Ghi hiện trạng | Theo quy tắc bài | Ghi sau | Không hợp thức hóa lỗi |
| Giá trị bất thường | Danh sách | Xác minh nguồn | Giữ/sửa/gắn cờ | Có lý do |
| Version | Tên file trước | Save As | Tên file sau | Không overwrite |