Biến số bị nhận là chuỗi ký tự phải làm sao trong SPSS

SPSS··16 phút đọc

Hiện tượng bạn đang gặp

Bạn mở file .sav, vào Analyze > Descriptive Statistics > Frequencies hoặc Analyze > Scale > Reliability Analysis, nhưng biến cần phân tích không xuất hiện trong danh sách. Một trường hợp khác là biến vẫn xuất hiện, nhưng SPSS báo lỗi khi chạy, trả về toàn giá trị thiếu hoặc hiển thị cảnh báo liên quan đến kiểu dữ liệu.

Trong Variable View, cột Type của biến đang là String thay vì Numeric. Ví dụ, biến GT1 đáng lẽ chứa các mã 1, 2, 3, 4, 5 nhưng SPSS lại lưu chúng dưới dạng chuỗi ký tự. Khi đó, số 1 trong ô dữ liệu chỉ là ký tự văn bản, chưa phải một giá trị số mà SPSS có thể tính trung bình, độ lệch chuẩn, tương quan hay hồi quy.

Bạn có thể gặp triệu chứng này sau khi nhập dữ liệu từ Excel, Google Forms hoặc một file CSV. Dấu hiệu dễ thấy là các giá trị trong Data View căn trái, cột Measure đặt là Nominal một cách bất thường, hoặc khi chạy phân tích bạn nhận được thông báo không có valid cases. Nếu lỗi nằm ở việc SPSS không đọc được giá trị nào để phân tích, xem thêm hướng xử lý tại SPSS báo no valid cases phải làm sao.

Nguyên nhân thường gặp

String không phải lúc nào cũng là lỗi. Các biến như mã người trả lời, tỉnh thành, ngành học hoặc câu trả lời mở có thể để dạng chuỗi. Vấn đề phát sinh khi một biến dùng để tính toán, chẳng hạn biến quan sát Likert từ 1 đến 5, lại bị lưu thành chuỗi.

Dấu hiệu trong fileNguyên nhân có thể xảy raCách kiểm tra trong SPSS
TypeString, dữ liệu nhìn giống 1, 2, 3, 4, 5SPSS nhận cột từ Excel hoặc CSV là văn bảnMở Variable View, xem cột Type và độ rộng Width
Một số ô có dấu nháy đơn trước sốExcel lưu số như textMở file gốc, chọn ô và kiểm tra cảnh báo định dạng
Có giá trị như 5 điểm, Mức 5 hoặc Rất đồng ýDữ liệu chứa chữ cùng với sốDùng Analyze > Descriptive Statistics > Frequencies để xem toàn bộ nhãn giá trị
Số thập phân dùng dấu phẩy không thống nhấtThiết lập vùng của Excel và SPSS khác nhauKiểm tra vài ô như 3,5, 3.5, đồng thời xem dấu thập phân sai khi nhập dữ liệu phải làm sao
Có khoảng trắng ở đầu hoặc cuối giá trịDữ liệu từ biểu mẫu hoặc file CSV có khoảng trắng ẩnKiểm tra độ dài chuỗi, hoặc dùng chức năng chuyển đổi trong SPSS
Một cột có cả số, chữ và ô trốngCột nguồn không đồng nhấtLọc và kiểm tra từng giá trị trong Data View

Cột Measure gồm Nominal, OrdinalScale không quyết định một biến là String hay Numeric. Measure chỉ mô tả cấp độ đo để SPSS gợi ý cách sử dụng biến. Bạn cần sửa Type trước, sau đó mới xem lại Measure.

Nếu file không mở được hoặc biến bị biến dạng ngay từ lúc đọc file, hãy lưu một bản sao trước khi sửa. Hướng dẫn không mở được file SAV phải làm sao phù hợp với trường hợp lỗi nằm ở file chứ không chỉ ở kiểu biến.

Cách xử lý theo thứ tự ưu tiên

1. Lưu một bản sao và xác định biến nào thực sự cần đổi

Trước khi chuyển kiểu dữ liệu, dùng File > Save As để tạo một file mới, chẳng hạn du_lieu_clean_v1.sav. Giữ nguyên file gốc để đối chiếu nếu kết quả sau khi chuyển đổi bị thiếu hoặc sai.

Lập danh sách các biến dùng cho phân tích. Biến định danh như MaSV, Email hoặc MaPhieu không cần đổi sang Numeric chỉ vì chúng chứa chữ số. Ngược lại, các biến dùng để tính điểm trung bình, Cronbach's Alpha, EFA, tương quan hoặc hồi quy phải được kiểm tra kỹ.

Bạn cũng nên xem codebook hoặc bảng hỏi. Nếu phương án trả lời trong bảng hỏi là Rất không đồng ý đến Rất đồng ý, dữ liệu có thể được nhập dưới dạng chữ có chủ đích. Khi đó, bạn cần tạo mã số theo quy ước đã chốt, chẳng hạn từ 1 đến 5, thay vì đổi máy móc mọi chuỗi thành số.

2. Kiểm tra Type, Decimals và giá trị trong Variable View

Mở Variable View, tìm biến cần sửa và nhìn vào cột Type. Nhấn vào ô đó, chọn nút ba chấm, SPSS sẽ mở hộp thoại Variable Type. Nếu biến là String, bạn sẽ thấy kiểu chuỗi và độ rộng ký tự.

Một biến Likert đã mã hóa phải có TypeNumeric. Với dữ liệu Likert nguyên từ 1 đến 5, đặt Decimals bằng 0. Với điểm trung bình hoặc tỷ lệ có phần lẻ, có thể đặt số chữ số thập phân phù hợp. Đừng nhầm Decimals với việc đổi String thành Numeric. Chỉ giảm số chữ số hiển thị không biến một chuỗi thành số.

Sau đó xem Data View. Các giá trị cần phân tích phải có cùng quy tắc mã hóa. Nếu một biến có 1, 2, 3 nhưng cũng có Không biết, bạn phải quyết định cách xử lý Không biết theo bảng hỏi và kế hoạch dữ liệu, thay vì để SPSS tự đoán.

3. Dùng Transform > Automatic Recode cho biến phân loại bằng chữ

Nếu biến đang chứa các nhãn như Nam, Nữ, Khác, hoặc Rất đồng ý, Đồng ý, Trung lập, bạn có thể dùng Transform > Automatic Recode. Chọn biến gốc, đặt tên cho biến mới, rồi nhấn Add New NameOK.

SPSS sẽ tạo một biến Numeric mới và gán mã cho từng giá trị chữ. Hãy kiểm tra bảng ánh xạ được tạo ra. Mã số có thể được sắp theo thứ tự chữ cái, không nhất thiết trùng với thứ tự bạn muốn dùng trong bảng hỏi. Với biến giới tính, việc mã hóa 1 và 2 thường chỉ là mã nhóm. Với thang đo Likert, thứ tự mức độ phải được kiểm tra để tránh đảo ngược ý nghĩa.

Giữ lại biến String gốc và dùng biến Numeric mới trong phân tích. Cách này dễ truy vết hơn việc ghi đè dữ liệu gốc. Mở Variable View, cập nhật Label, ValuesMeasure cho biến mới để người đọc output sau này hiểu mã số đại diện cho điều gì.

4. Dùng Transform > Compute Variable để chuyển chuỗi số sang số

Nếu chuỗi chỉ chứa số, mở Transform > Compute Variable. Đặt tên biến đích, chẳng hạn GT1_num, rồi thử hàm NUMBER(GT1, F8.0) trong ô Numeric Expression. Định dạng F8.0 phù hợp với số nguyên. Nếu dữ liệu có phần thập phân, cần dùng định dạng có số lẻ và kiểm tra quy tắc dấu thập phân của file.

Bạn cũng có thể dùng syntax để dễ lặp lại và lưu nhật ký xử lý:

COMPUTE GT1_num = NUMBER(GT1, F8.0).
EXECUTE.

Nếu SPSS tạo ra nhiều giá trị missing sau lệnh này, nguyên nhân thường là chuỗi có ký tự không phải số, khoảng trắng hoặc dấu thập phân không đúng. Đừng xóa biến gốc ngay. Hãy dùng Frequencies trên biến gốc để tìm những giá trị không chuyển được.

5. Làm sạch khoảng trắng, nhãn và dấu thập phân trước khi chuyển đổi

Một chuỗi nhìn giống 4 vẫn có thể chứa khoảng trắng ẩn. Bạn có thể tạo biến trung gian bằng hàm RTRIM hoặc LTRIM, sau đó thử chuyển đổi lại. Với dữ liệu có ký hiệu như 4 điểm, cần loại bỏ phần chữ theo quy tắc rõ ràng. Nếu chỉ có vài dòng sai, sửa từ file nguồn thường an toàn hơn viết một công thức phức tạp.

Hãy phân biệt dấu phẩy thập phân với dấu phân cách hàng nghìn. Ví dụ 3,5 có thể là ba phẩy năm trong thiết lập này, nhưng có thể bị đọc thành chuỗi trong thiết lập khác. Kiểm tra một vài giá trị thực tế trước khi áp dụng cho toàn bộ cột.

Sau mỗi lần sửa, chạy Analyze > Descriptive Statistics > Frequencies hoặc Descriptives. Kiểm tra N, Missing, Minimum, Maximum, MeanStd. Deviation. Một biến Likert từ 1 đến 5 không nên tự nhiên có giá trị 55, 0 hoặc 999 nếu đó không phải mã thiếu đã quy định.

6. Kiểm tra lại bằng một phân tích nhỏ trước khi chạy mô hình

Khi biến đã là Numeric, thử đưa vài biến vào Analyze > Descriptive Statistics > Descriptives. Nếu SPSS cho ra MeanStd. Deviation, kiểu dữ liệu đã phù hợp với phép tính cơ bản.

Sau đó kiểm tra tần suất và missing. Với thang đo, có thể chạy thử Analyze > Scale > Reliability Analysis cho một nhóm biến. Đây chỉ là bước kiểm tra dữ liệu, chưa phải kết luận rằng thang đo đạt. Nếu biến vẫn không xuất hiện trong hộp thoại, xem lại loại biến, quyền truy cập file và danh sách biến đang chọn.

Bảng dưới đây mô phỏng hình dạng kết quả bạn có thể thấy sau khi chuyển đổi. Đây là số liệu minh họa, không phải kết quả từ một nghiên cứu thực tế.

Descriptive StatisticsNMinimumMaximumMeanStd. Deviation
GT1_num182153.840.91
GT2_num182153.760.88
GT3_num180153.690.95
Valid N (listwise)180

Trong ví dụ này, GT3_num có hai giá trị thiếu nên Valid N (listwise) giảm còn 180. Con số minh họa này không phải ngưỡng để kết luận dữ liệu của bạn tốt hay xấu. Bạn cần đối chiếu với bảng hỏi và quy tắc xử lý missing đã viết trong phương pháp nghiên cứu.

Khi nào phải quay lại thu thêm dữ liệu

Đổi String thành Numeric là xử lý cấu trúc dữ liệu. Nó không khôi phục được câu trả lời đã bị mất, không biết một ô trống trước đây là người trả lời bỏ qua hay lỗi khi xuất file, và không sửa được trường hợp mã hóa sai ngay từ bảng hỏi.

Bạn nên cân nhắc thu lại dữ liệu khi một trong các tình huống sau xảy ra. Toàn bộ một biến bị rỗng vì biểu mẫu không lưu câu trả lời. Nhiều dòng có cùng một giá trị bất thường do người nhập chọn nhầm mã. File gốc và file đã nhập không khớp mà bạn không thể truy nguyên quy tắc chuyển đổi. Hoặc biến quan trọng bị cắt mất phần chữ khiến không thể xác định câu trả lời ban đầu.

Nếu chỉ có khoảng trắng, sai kiểu String, dấu thập phân hoặc vài giá trị nhập không nhất quán, thường có thể sửa bằng syntax và ghi lại quy trình. Nếu đã sửa nhiều vòng, hãy lưu từng phiên bản và tạo một bảng nhật ký gồm tên biến, lỗi ban đầu, lệnh xử lý, số dòng bị ảnh hưởng và quyết định cuối cùng.

Đừng thu thêm dữ liệu chỉ vì một biến đang là String. Trước tiên kiểm tra xem dữ liệu gốc còn đầy đủ không. Thu thêm mẫu sẽ không giải quyết được một quy tắc mã hóa sai đang áp dụng cho cả file.

Cách giải trình với giảng viên hướng dẫn

Bạn có thể trình bày ngắn gọn như sau: “Biến [tên biến] ban đầu được SPSS nhận là String do dữ liệu xuất từ [nguồn dữ liệu]. Em giữ lại biến gốc, tạo biến Numeric [tên biến mới] bằng [Automatic Recode hoặc NUMBER], sau đó kiểm tra lại tần suất, giá trị thiếu và khoảng giá trị trước khi đưa vào phân tích. Các giá trị không chuyển đổi được gồm [số lượng] dòng và được xử lý theo quy tắc [quy tắc đã chọn].”

Cách viết này cho thấy bạn đã phân biệt lỗi định dạng với thay đổi dữ liệu. Hãy đính kèm syntax hoặc ảnh Variable View, không chỉ nói rằng “em đổi sang số”. Nếu dùng Automatic Recode, ghi rõ bảng ánh xạ mã chữ sang mã số. Nếu dùng Compute Variable, ghi công thức và số quan sát bị chuyển thành missing.

Cách viết vào luận văn: “Dữ liệu sau khi nhập được kiểm tra kiểu biến, giá trị thiếu và phạm vi mã hóa. Các biến [danh sách biến] được chuyển từ dạng chuỗi sang dạng Numeric bằng [phương pháp], trong khi biến gốc được lưu riêng để đối chiếu. Sau làm sạch, số quan sát hợp lệ dùng cho phân tích là [N].”

Cách phòng từ bước thiết kế

Ngay từ lúc thiết kế bảng hỏi, hãy quy định mã số cho từng phương án trả lời. Với thang Likert, ghi rõ 1 là mức nào và 5 là mức nào. Không trộn 1, Mức 2Đồng ý trong cùng một biến.

Khi xuất dữ liệu, kiểm tra file bằng Excel trước khi mở trong SPSS. Tên cột nên ngắn, không dấu, không có khoảng trắng, chẳng hạn HL1, HL2, HL3. Tách cột định danh khỏi các biến dùng phân tích. Nếu dùng CSV, kiểm tra dấu phân cách cột và mã hóa ký tự.

Sau khi nhập vào SPSS, chạy ngay Frequencies cho toàn bộ biến khảo sát. Kiểm tra N, số giá trị khác nhau, min, max và một vài dòng đầu tiên. Làm bước này trước Cronbach's Alpha sẽ rẻ hơn rất nhiều so với phát hiện lỗi sau khi đã chạy EFA và hồi quy.

Nên lưu ba bản: file dữ liệu gốc, file đã làm sạch và file phân tích. Không sửa trực tiếp file gốc. Nếu SPSS bị treo trong quá trình mở hoặc chạy lệnh, xem lỗi SPSS bị treo khi chạy SPSS. Các vấn đề hiển thị tiếng Việt trong nhãn biến cũng nên tách riêng khỏi lỗi kiểu dữ liệu, vì font tiếng Việt bị lỗi SPSS không đồng nghĩa với việc biến đang là String.

Lỗi thường gặp khi sửa

Lỗi đầu tiên là đổi tất cả biến String thành Numeric. Điều này có thể làm hỏng biến mã sinh viên, email hoặc câu trả lời mở. Chỉ chuyển đổi biến có ý nghĩa số và đã được quy định cách mã hóa.

Lỗi thứ hai là dùng Automatic Recode cho thang đo mà không xem bảng ánh xạ. Nếu thứ tự nhãn chữ bị mã hóa sai, điểm cao và điểm thấp có thể bị đảo. Với biến quan sát, hãy xác nhận mã mới khớp với quy ước của bảng hỏi.

Lỗi thứ ba là ghi đè biến gốc. Khi kết quả không đúng, bạn sẽ không còn dữ liệu để so sánh. Tạo biến mới có hậu tố _num, _clean hoặc tên tương tự, rồi ghi lại lý do tạo biến.

Lỗi thứ tư là chỉ nhìn vào Type mà bỏ qua giá trị bên trong. Một biến Numeric vẫn có thể chứa mã thiếu 99, giá trị ngoài thang đo hoặc dữ liệu nhập sai. Kiểm tra tần suất, min và max sau khi chuyển đổi.

Lỗi cuối là chạy lại phân tích nhưng không cập nhật danh sách biến. Sau khi tạo biến mới, bạn phải đưa biến mới vào hộp thoại phân tích và loại biến String cũ khỏi mô hình. Nếu SPSS vẫn báo lỗi, đóng mở lại file bản sao và kiểm tra syntax đã chạy đúng chưa.

Câu hỏi thường gặp

Biến String có chạy được Cronbach's Alpha không?

Thông thường không. Cronbach's Alpha cần các giá trị số để tính hiệp phương sai giữa các biến quan sát. Nếu biến đang là String, hãy xác định nó là chuỗi số hay nhãn chữ, sau đó chuyển sang Numeric bằng cách phù hợp.

Đừng chỉ đổi Measure từ Nominal sang Scale. Thao tác đó không thay đổi Type. Bạn phải kiểm tra cột Type trong Variable View và thử Descriptives sau khi sửa.

Vì sao biến nhìn là số nhưng SPSS vẫn nhận là String?

Trong file Excel, số có thể được lưu dưới dạng text do dấu nháy đơn, khoảng trắng, công thức hoặc định dạng vùng. Khi nhập, SPSS đọc nội dung thực tế chứ không chỉ nhìn hình thức hiển thị.

Hãy kiểm tra một vài ô ở file gốc, xem có dấu cách hoặc chữ đi kèm không. Sau đó tạo biến Numeric mới và kiểm tra N, Minimum, Maximum cùng số lượng missing.

Nên dùng Automatic Recode hay Compute Variable?

Dùng Automatic Recode khi dữ liệu là các nhóm chữ như Nam, Nữ hoặc các nhãn mức độ đã được kiểm tra. Dùng Compute Variable với NUMBER() khi chuỗi chỉ chứa số và bạn muốn kiểm soát rõ công thức chuyển đổi.

Với thang Likert, cả hai cách đều cần kiểm tra quy tắc mã hóa. Không chọn công cụ chỉ vì nó chạy được, hãy chọn cách giúp bạn giải trình được biến mới được tạo như thế nào.

Chuyển String sang Numeric có làm mất dữ liệu không?

Có thể, nếu chuỗi chứa ký tự không chuyển đổi được, dấu thập phân sai hoặc giá trị có chữ đi kèm. Vì vậy, hãy tạo bản sao và biến mới trước khi chuyển đổi.

Sau lệnh chuyển đổi, so sánh số dòng hợp lệ với file gốc. Những dòng trở thành missing phải được liệt kê và kiểm tra, không được âm thầm bỏ qua.

Có cần thu thêm dữ liệu khi biến bị nhận là String không?

Chưa chắc. Nếu dữ liệu gốc còn nguyên và lỗi chỉ nằm ở kiểu lưu, bạn có thể làm sạch trong SPSS. Chỉ cân nhắc thu lại khi câu trả lời bị mất, mã hóa không thể truy nguyên hoặc nhiều dòng bị sai nội dung chứ không chỉ sai định dạng.

Bước tiếp theo trong file của bạn là tạo một bản sao, kiểm tra Variable View, xác định từng biến cần chuyển đổi, rồi chạy Frequencies trước và sau khi sửa. Nếu muốn xử lý trực tiếp file .sav hoặc .csv và ghi lại toàn bộ bước phân tích, bạn có thể dùng M4 phân tích dữ liệu của DoThesis.