Trong cuốn sách: Phân tích dữ liệu với R - GS Nguyễn Văn Tuấn (tr 19-26) đã hướng dẫn chi tiết cách nhập dữ liệu ở
dạng mà R có thể hiểu được để xử lý, từ cách nhập số liệu trực tiếp bằng hàm c
() [concatenate], bằng edit (data.frame()); nhập từ một text file: read.table;
nhập từ Excel: read.csv; và nhập từ một SPSS: read.spss... Tài liệu đã hướng dẫn
rất chi tiết về cách nhập dữ liệu từ nhiều cách khác nhau, nên mình không dám
nhàm bàn thêm, có chăng, trong phạm vi cái note này, mình nói thêm một chút về
những vướng mắc trong quá trình nhập dữ liệu trực tiếp, hoặc chuyển từ dạng
khác (Excel) vào R để chuẩn bị các bước tiếp theo.
Dù là cách nhập trực tiếp hoặc gián
tiếp từ Excel (read.csv), SPSS (read.spss)... để R có thể hiểu và xử lý được,
các bạn phải rõ văn phạm ngôn ngữ trong R, mà đôi khi ngồi xử lý dữ liệu sẽ mất
thời gian nếu ta không chú ý.
TH1: Tên biến khi nhập dữ liệu, thường thì R phân biệt chữ IN HOA
và chữ thường, tương tự, tên biến mà để cách (ví dụ: Loai cay thay vì Loaicay)
sau khi chuyển vào, R sẽ tự động chuyển dấu cách (Loai cay) thành dạng
(Loai.cay) để R có thể đọc và xử lý được. Thực ra cũng không vấn đề gì nhiều. Tuy
nhiên, khi xử lý kết quả và sau này cóp kết quả dán vào phần phụ lục sẽ không
đẹp, và khoa học cho lắm. Thôi thì, ngay từ ban đầu ta hiểu và viết đúng dạng
theo ý mình mà R cũng hiểu và xử lý được là tuyệt cú mèo nhất.
Khi bạn để dấu cách như vậy, trong
R tự chuyển sang dấu chấm thay vì dấu cách (Hình dưới đây).
Để xem lại các biến trong file dữ
liệu vừa nhập, bạn dùng lệnh: > fix(Keo)trong đó, Keo
là tên biến.
Thực ra, dấu chấm giữa hai từ cũng
đẹp (Loai.cay) hơn (Loaicay). Nói chung là tùy sở thích của mỗi bạn. Mình hay
viết liền và sử dụng từ viết tắt hơn (Loaicay = Lc, Sinhtruong = St...).
TH2: Khi bạn đã chuyển dữ liệu vào R để xử lý. Tuy nhiên, nếu bạn
không kiểm tra ngay từ đầu rất dễ có nhiều sai sót (sai lầm) từ người nhập dữ
liệu. Ví dụ: dữ liệu đường kính gốc (Dgoc) của cây Keo là 12cm (12), bạn nhập
nhầm là 120cm (120), khi xử lý số liệu sẽ có bất thường, đặc biệt khi vẽ biểu đồ
bạn sẽ thấy một điểm bất thường trên biểu đồ.
Bạn để ý giá trị (mean+sd) của giá
trị đường kính gốc (D.goc) ở 3 OTC (bôi
vàng).
Descriptive statistics by group
group: 1
vars n
mean sd se
otc 1 64 1.00
0.00 0.00
dd* 2 64 1.00 0.00
0.00
age 3 64 5.00
0.00 0.00
Loai.cay* 4 64
1.00 0.00 0.00
cv 5 64 35.73 11.11 1.39
D.goc 6 64 13.07 14.03 1.75
H.vn 7 64 8.95
2.00 0.25
Sinh.truong* 8 64
1.14 0.39 0.05
clu* 9 64 1.05
0.21 0.03
deld 10 64 2.28
0.71 0.09
delh 11 64 1.79
0.40 0.05
g 12 64 0.01
0.01 0.00
delg 13 64 0.00
0.00 0.00
m 14 64 0.06
0.04 0.01
delm 15 64 0.01
0.01 0.00
vtri* 16 64
1.00 0.00 0.00
dcao 17 64 29.00 0.00 0.00
----------------------------------------------------------------------
group: 2
vars n
mean sd se
otc 1 21 2.00 0.00 0.00
dd* 2 21 1.00 0.00 0.00
age 3 21 5.00 0.00 0.00
Loai.cay* 4 21
1.00 0.00 0.00
cv 5 21 43.10 9.05 1.97
D.goc 6 21 13.72 2.88 0.63
H.vn 7 21 12.63 1.70 0.37
Sinh.truong* 8 21
1.14 0.48 0.10
clu* 9 21 1.14 0.48 0.10
deld 10 21 2.74 0.57 0.13
delh 11 21 2.53 0.34 0.07
g 12 21 0.02 0.01 0.00
delg 13 21 0.00 0.00 0.00
m 14 21 0.10 0.04 0.01
delm 15 21 0.02 0.01 0.00
vtri* 16 21
1.00 0.00 0.00
dcao 17 21 39.00 0.00 0.00
----------------------------------------------------------------------
group: 3
vars n
mean sd se
otc 1 15 3.00 0.00 0.00
dd* 2 15 1.00 0.00 0.00
age 3 15
5.00 0.00 0.00
Loai.cay* 4 15
1.00 0.00 0.00
cv 5 15 26.67 6.83 1.76
D.goc 6 15
8.49 2.17
0.56
H.vn 7 15 10.13 0.64 0.17
Sinh.truong* 8 15
1.40 0.74 0.19
clu* 9 15 1.40 0.74 0.19
deld 10 15 1.70 0.43 0.11
delh 11 15 2.03 0.13 0.03
g 12 15 0.01 0.00 0.00
delg 13 15 0.00 0.00 0.00
m 14 15 0.03 0.02 0.00
delm 15 15 0.01 0.00 0.00
vtri* 16 15
1.00 0.00 0.00
dcao 17 15 15.00 0.00 0.00
Ở group: 1 giá trị mean (13,07)
nhưng sd (14,03), trong khi ở group: 2 và group: 3, sd tương ứng 2,88 : 2,17.
Vì vậy, sd ở group 1 (sd = 14,03) là bất thường.
Để tránh những sai lầm như vậy, sau
khi nhập dữ liệu xong mình thường kiểm tra lại ngay trên Excel bằng cách chọn
hàm max và min để xem giá trị lớn nhất và nhỏ nhất xem có gì bất thường hay
không.
Ngoài ra, bạn có thể kiểm tra bằng
cách vẽ biểu đồ điểm (giá trị Dgoc, Hvn...), khi đó bạn sẽ có cái nhìn trực
quan nhất về dữ liệu thô (Hình dưới đây).
Để khắc phục vấn đề đó, ban đầu
mình phải quay lại sửa số liệu ban đầu từ file Excel, rồi lại chuyển ngược lại
vào R. Tuy nhiên, bạn có thể dùng lệnh: > fix(Keo)
như trên, cửa sổ Data Editor hiện
ra và bạn tìm đến giá trị bất thường đó và sửa trực tiếp trong đó mà không cần
phải quay lại sửa từ file Excel.
Đôi khi, có quá nhiều dữ liệu và bạn
lỡ bỏ trống một ô nào đó, khi chuyển vào R, những ô đó R báo là dữ liệu trống
không (NA), và đó cũng dấu hiệu để ta phát hiện ra những bất thường để chỉnh sửa
trước khi bước bắt tay vào những bước tiếp theo.
Trong phạm vi cái note này mình đề
cập đến một vài vấn đề mà mình đã gặp phải, muốn ai đó quan tâm, biết để tránh
cho mình đỡ mất thời gian vào những vấn đề đó.
Ngoài ra, các bạn có thể học cách
nhập dữ liệu bằng cách dán (paste) thẳng vào R bằng hàm scan () của BS Trần Quý
Phi trên group: Thống kê ứng dụng và R đã chia sẻ. Dưới đây, mình xin được copy
và paste cách của BS Trần Quý Phi, vừa là để lựa lại học hỏi, vừa là để ai đó
quan tâm biết thêm về cách nhập dữ liệu: copy và dán giá trị từ Excel bằng hàm
scan ().
"Bạn hãy thử
dùng scan() bình thường như sau:
1. Gõ age=scan() trên R
2. Enter.
3. R sẽ cho ra từng dòng, có sẵn số thứ tự, bạn nhập xong một giá trị thì Enter.
4. Đến giá trị cuối cùng, đừng nhập chi cả, chỉ Enter thôi.
1. Gõ age=scan() trên R
2. Enter.
3. R sẽ cho ra từng dòng, có sẵn số thứ tự, bạn nhập xong một giá trị thì Enter.
4. Đến giá trị cuối cùng, đừng nhập chi cả, chỉ Enter thôi.
Bây giờ giả sử
đã có dãy giá trị trong Excel rồi.
1. Trong Excel hãy chọn chúng và copy (Ctrl+C).
2. Ở trong R gõ age=scan() như trên rồi Enter.
3. Khi R nhắc cho giá trị thứ nhất, hãy bấm Ctrl+V (dán).
4. Loạt giá trị sẽ được điền vào cùng một lúc.
5. Enter để kết thúc." - BS. Trần Quý Phi
1. Trong Excel hãy chọn chúng và copy (Ctrl+C).
2. Ở trong R gõ age=scan() như trên rồi Enter.
3. Khi R nhắc cho giá trị thứ nhất, hãy bấm Ctrl+V (dán).
4. Loạt giá trị sẽ được điền vào cùng một lúc.
5. Enter để kết thúc." - BS. Trần Quý Phi
Ở cái note sau mình sẽ đề cập một
chút đến tách dữ liệu bằng hàm subset ()
và chiết dữ liệu bằng hàm chol(), mình
nghĩ sẽ là rất hữu ích cho việc bước tiếp theo khi xử lý cũng như vẽ biểu đồ, đặc
biệt là về những vấn đề mà mình gặp phải trong khi chuẩn bị dữ liệu. Hẹn gặp lại.
Trân trọng!.