Tôi có một khung dữ liệu datwe
với 37 cột. Tôi quan tâm đến việc chuyển đổi các giá trị số nguyên (1,2,99) trong các cột từ 23 đến 35 thành các giá trị ký tự ('Có', 'Không', 'NA').Áp dụng CASE KHI trong câu lệnh sqldf để thao tác nhiều cột
datwe$COL23 <- sqldf("SELECT CASE COL23 WHEN 1 THEN 'Yes'
WHEN 2 THEN 'No'
WHEN 99 THEN 'NA'
ELSE 'Name ittt'
END as newCol
FROM datwe")$newCol
Tôi đã sử dụng các câu lệnh trên sqldf
để chuyển đổi riêng từng cột. Tôi đã tự hỏi nếu có bất kỳ cách thông minh khác để làm điều này, có lẽ áp dụng các chức năng?
Nếu bạn yêu cầu bất kỳ dữ liệu tái tạo nào để xây dựng khung dữ liệu datwe
, tôi sẽ thêm nó tại đây. Cảm ơn.
Edit: Ví dụ datwe
set.seed(12)
data.frame(replicate(37,sample(c(1,2,99),10,rep=TRUE)))
Trong câu lệnh SQL bạn có 2 whens - '... WHEN WHEN 1 ...'. Ngoài ra, tại sao không chỉ trích xuất 'col23 - col35', sau đó chuyển đổi nó thành ký tự trong R? – zx8754
@ zx8754 Cảm ơn vì điều đó, tôi đã chỉnh sửa bài đăng. Tôi giả định rằng 'as.character()' sẽ chuyển đổi các giá trị số nguyên thành các giá trị ký tự. Tôi nên chuyển các giá trị mới làm đối số để chuyển đổi ở đâu? – Prradep