Cải thiện tên biến trong bộ dữ liệu


11

Tên biến tốt là:

a) ngắn / dễ gõ

b) dễ nhớ,

c) dễ hiểu / giao tiếp.

Tôi có quên gì không? Tính nhất quán là một cái gì đó để tìm kiếm. Cách tôi muốn nói là các quy ước đặt tên nhất quán đóng góp vào các phẩm chất trên. Tính nhất quán góp phần làm cho (b) dễ nhớ lại và (c) dễ hiểu, mặc dù các yếu tố khác thường quan trọng hơn. Có một sự đánh đổi rõ ràng giữa (a) độ dài tên / dễ gõ (ví dụ: tất cả chữ thường) và (c) dễ hiểu.

Tôi đang đầu tư một chút suy nghĩ vào những vấn đề này bởi vì hàng ngàn người đang sử dụng dữ liệu và tôi hy vọng nhiều người sẽ sử dụng mã của tôi để chuẩn bị dữ liệu và tạo điều kiện cho một số loại phân tích. Dữ liệu từ Nghiên cứu dài hạn về sức khỏe vị thành niên, được chia thành nhiều bộ dữ liệu. Bước đầu tiên của tôi là lấy 227 biến trong bộ dữ liệu được sử dụng phổ biến nhất, mã hóa lại chúng, đặt cho chúng những cái tên có ý nghĩa hơn. Tên biến ban đầu là những thứ như "Aid", "s1", "s2", mà tôi đã đổi tên thành "Aid2", "age" và "male.is". Có hàng ngàn biến số khác trong các bộ dữ liệu khác có thể được hợp nhất tùy thuộc vào mục tiêu của nhà nghiên cứu.

Miễn là tôi đổi tên các biến, tôi muốn làm cho chúng hữu ích nhất có thể. Đây là một số vấn đề tôi đã xem xét. Cho đến nay, tôi chỉ sử dụng chữ thường và tránh sử dụng bất kỳ dấu gạch ngang hoặc dấu gạch dưới nào và tôi chỉ sử dụng các khoảng thời gian cho một mục đích rất cụ thể. Điều này có ưu điểm của sự đơn giản và nhất quán và không gây ra vấn đề gì cho hầu hết các biến. Nhưng khi mọi thứ trở nên phức tạp hơn, tôi muốn phá vỡ tính nhất quán của mình. Lấy ví dụ, biến "talkprobmsum" của tôi, sẽ dễ đọc hơn là "talkProbMSum" hoặc tốt hơn là "talk.prob.m.sum", nhưng nếu tôi sẽ sử dụng chữ in hoa hoặc dấu chấm để phân tách các từ thì Tôi không nên làm điều đó cho tất cả các biến?

Một số biến được ghi lại nhiều lần, ví dụ: các biến chủng tộc nên tôi đã thêm .is hoặc .ih để cho biết liệu chúng đến từ bảng câu hỏi trong trường hay trong nhà. Nhưng chắc chắn có một số lần lặp lại mà tôi chưa biết, liệu có tốt hơn để nối một tham chiếu đến tập dữ liệu vào tên của mỗi biến không?

Tôi cần phải tập trung vào nhóm và chuẩn hóa rất nhiều biến số, cách tôi đã làm là bằng cách nối thêm .zms có nghĩa là điểm z của nam và theo trường.

Bất kỳ suy nghĩ hoặc tài nguyên chung hoặc cụ thể được đánh giá rất cao. Xem kho lưu trữ này để biết một số mã của tôi và thống kê mô tả với danh sách các tên biến. Tôi đã mô tả ngắn gọn lý do chia sẻ mã này ở đây và nó đã được công khai một chút ở đây , nhưng hai liên kết cuối cùng này không thực sự liên quan đến vấn đề quy ước đặt tên biến. Đã thêm: Tôi đã chỉnh sửa điều này một cách nhẹ nhàng, chủ yếu chỉ là di chuyển một đoạn văn, để cố gắng tránh một số sự nhầm lẫn rõ ràng trong các bình luận. Cảm ơn những suy nghĩ!

Đã thêm 2016-09-05: Đáng chú ý là Hướng dẫn về Phong cách R của Hadley WickhamHướng dẫn về Phong cách R của Google ... Hadley nói:

Tên biến và hàm nên viết thường. Sử dụng dấu gạch dưới (_) để phân tách các từ trong tên.

Google nói:

Không sử dụng dấu gạch dưới (_) hoặc dấu gạch ngang (-) trong mã định danh. Định danh nên được đặt tên theo các quy ước sau. Hình thức ưa thích cho tên biến là tất cả các chữ cái viết thường và các từ được phân tách bằng dấu chấm (biến.name), nhưng biến Tên cũng được chấp nhận; tên hàm có chữ in hoa ban đầu và không có dấu chấm (FunctionName); các hằng số được đặt tên giống như các hàm nhưng với k ban đầu.


+1 để thiết lập kho lưu trữ công cộng để chia sẻ giữa các nhà nghiên cứu, mặc dù câu hỏi này thực sự thuộc về Stack Overflow.
nico

6
Tại sao câu hỏi này sẽ tốt hơn trên SO, @nico? Đối với tôi nó dường như không phải là về lập trình hay thậm chí là về R, mà là về các thực tiễn thích hợp để ghi chép và sử dụng dữ liệu.
whuber

4
@whuber: Tôi nhận được quan điểm của bạn. Tuy nhiên, đọc câu hỏi tôi thấy nó là "tôi nên gọi các biến của mình như thế nào?", Điều này đối với tôi nghe giống như một vấn đề lập trình hơn là về thống kê ... Về suy nghĩ thứ hai, cũng đúng là khán giả ở đây gần hơn với mà sẽ sử dụng dữ liệu thực tế hơn so với SO.
nico

2
+1, tôi nghĩ rằng đây là một câu hỏi hay & ý tưởng để thực hiện điều này
gung - Tái lập Monica

2
Tôi nghĩ rằng điều này nên được mở.
gung - Phục hồi Monica

Câu trả lời:


4

Câu trả lời tốt nhất cho câu hỏi này là vịt nó. Về cơ bản, không có vấn đề gì về tên ngắn của các biến miễn là chúng được ghi chép tốt trong một cuốn sách mã ở đâu đó. Than ôi, vì R không có tài nguyên bản địa cho việc này, mọi người có xu hướng không bận tâm. (Thiếu đối với tôi, là thất bại lớn nhất trong ngôn ngữ như một công cụ thống kê).

Có nhiều gói R khác nhau cung cấp máy móc này, ví dụ như Hmiscbạn sử dụng và memisc. Nhưng thực sự lựa chọn tốt nhất là biến toàn bộ thành một gói R. Bằng cách đó, dữ liệu được xử lý có thể là một đối tượng có trang trợ giúp tương ứng mô tả mọi thứ hiện được gọi và có thể gán tín dụng khi đến hạn. Gói cũng có thể hiển thị dữ liệu thô và chức năng xử lý của bạn để mọi người thấy bạn đã làm gì để tạo ra sản phẩm cuối cùng.

Ngoài ra, một đề xuất: không bao gồm dữ liệu dẫn xuất như các biến và các phiên bản được tính điểm z của chúng trong đối tượng dữ liệu cuối cùng nếu bạn có thể giúp đỡ, chỉ cần cung cấp các hàm để tạo dữ liệu thay thế. Dữ liệu phái sinh chỉ là rắc rối từ quan điểm quản lý dữ liệu.


Bạn nói rằng các tên biến không quan trọng miễn là chúng được ghi chép rõ ràng ... Tôi không muốn tạo ra một ngọn núi từ một ngọn đồi nốt ruồi, nhưng tôi nghĩ chúng quan trọng ở một mức độ nào đó. Các tên biến khó nhớ hoặc khó gõ có chi phí thực sự trong thời gian nghiên cứu. Đặc biệt là nếu cùng một tên biến đang được sử dụng bởi một ngàn nhà nghiên cứu. Cảm ơn các gợi ý khác của bạn mặc dù :)
Michael Giám mục

4

Đây là một điều nhỏ: Tôi nghĩ rằng tốt hơn là sử dụng dấu gạch dưới so với thời gian. Lý do là hầu hết các ngôn ngữ lập trình, không giống như R, không hỗ trợ các khoảng thời gian trong mã định danh, nhưng gần như tất cả các ngôn ngữ đều hỗ trợ. Và tôi cho rằng bạn muốn tập dữ liệu của mình hữu ích với những người không sử dụng R.


1

Trước hết, cảm ơn bạn đã làm điều này - tôi chắc chắn nhiều người sẽ đánh giá cao nó, mặc dù không nhiều người sẽ biết rằng bạn đã làm nó.

Giao diện người dùng RStudio không (ít nhất là với các tùy chọn mặc định?) Diễn giải bất kỳ dấu phân cách nào trong tên biến. Ví dụ, Eclipse coi các phần viết hoa là các từ riêng biệt, vì vậy bạn có thể sử dụng mũi tên Ctrl + để nhanh chóng chỉnh sửa mã kiểu Java như thế nào ageStandardizedMaleSchool. Tôi không thể đưa ra bất kỳ lý do nào tốt hơn để thích một dải phân cách hơn một dải phân cách khác, vì vậy, dấu gạch dưới hoặc mũ có vẻ tốt đối với tôi.

Nói chung, tôi đề nghị làm cho các tên biến dài hơn, thay vì bám vào một số lược đồ viết tắt phức tạp. Thật dễ dàng để tạo ra lỗi chính tả như talk.prob.m.sumthay vì talk.prob.sum.ms, và rất khó để phát hiện và theo dõi lỗi trong phân tích thống kê. (Hơi liên quan: một câu nói hay mà tôi đã đọc trên một số blog là viết tên biến của bạn như các từ Scandinavia - SickHouseToothHealer thay vì bệnh việnnha sĩ .)

Trên một lưu ý cuối cùng: tiêu chuẩn hóa, định tâm, vv thường được thực hiện sau khi làm sạch dữ liệu. Nếu không có dọn dẹp, thì có thể xem xét để lại cho bất cứ ai sẽ phân tích dữ liệu. Hoặc, nếu bạn cũng đang tự làm sạch, hãy chỉ ra tất cả các bước bạn đã thực hiện - các phân tích và diễn giải tiếp theo có thể phụ thuộc rất nhiều vào điều đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.