2012-12-29 33 views
11

Tôi đang sử dụng RStudio, R Markdown, Latex và Pandoc để làm sạch dữ liệu, tạo biến, chạy phân tích của tôi và báo cáo kết quả. Tôi mới đến khái niệm về nghiên cứu có thể tái sản xuất, nhưng tôi bị mắc kẹt. Hãy làm cho nó thêm ý nghĩa hơn.văn bản tự động cho nghiên cứu tái sản xuất

Bảng và hình động không có vấn đề gì. Văn bản động, tuy nhiên, là stumping tôi. Tôi có thể chèn mã nội tuyến để nói rằng 95% của tất cả các số liệu thống kê là sai, nhưng tôi không chắc chắn làm thế nào tôi có thể thay đổi ngôn ngữ của tôi một cách tái sản xuất.

Ví dụ: nếu tôi có đối tượng x = 0,66 và tôi muốn viết "2 trong số 3 nha sĩ sử dụng Crest"? Tôi có thể nhìn vào giá trị hiện tại của x, 0,66 và gõ "2 trong số 3" trong văn bản, nhưng điều này không thể tái sản xuất được. Giả sử tôi nhận dữ liệu mới và chạy lại phân tích của tôi và x trở thành 0,52. Văn bản của tôi sẽ lỗi thời. Chắc chắn, tôi có thể tự động báo cáo rằng 52% nha sĩ thích Crest, nhưng một báo cáo bị lỗi thời khi mọi thứ được báo cáo là tỷ lệ phần trăm.

Suy nghĩ của tôi là tôi có thể tạo các chức năng mà tôi có thể gọi trong văn bản khi tôi muốn thay đổi văn bản. Ví dụ, một chức năng "out.of" có thể làm việc trên nếu báo cáo khác để tạo ra văn bản:

ifelse(x < 0.09,"fewer than 1 out of 10", 
ifelse(x >= 0.09) & x < 0.11,"roughly 1 out of 10", 
ifelse(x >= 0.11 & x < 0.15,"slightly more than 1 out of 10", 
ifelse(x >= 0.15 & x < 0.19,"nearly 2 out of 5", 
ifelse(x >= 0.19 & x < 0.21,"roughly 2 out of 5", 
... 
ifelse(x >= 0.95 & x < 0.99,"nearly all", 
ifelse(x >= 0.99,"all","fubar"))...) 

tôi cũng có thể tạo một hàm phân số mà có thể làm một cái gì đó tương tự cho một phần mười, hai phần năm, một -third ...

Tôi chắc rằng những người khác đã giải quyết vấn đề này rồi. Bất kỳ khách hàng tiềm năng nào? Ý tưởng?

+0

Đây là một câu hỏi thực sự thú vị, nhưng tôi nghĩ nó sẽ thực sự phụ thuộc vào giới hạn của bạn là gì để dễ đọc. Ví dụ, bạn có xem xét "1 trong số 20" hoặc "1 trong số 25" là các tùy chọn hợp lệ không? Ngưỡng nào bạn muốn đặt cho các ngắt chung hơn (như "2 trên 5")? Khi điều này được sắp xếp, tôi sẽ đề nghị thử 'cut()' và chỉ định các nhãn thay vì 'ifelse()'. Tôi không nghĩ bất kỳ gói nào sẽ làm điều đó cho bạn, nhưng chúng sẽ giúp bạn đạt được điều đó! – A5C1D2H2I1M1N2O1R2T1

+0

Khi nói đến tỷ lệ phần trăm đại diện, tôi nghĩ rằng "trong số 10" là thấp nhất tôi muốn đi. Tôi đã học được một tấn R năm nay (từ đường cơ sở bằng không), nhưng không cắt(). Sẽ nhìn vào nó. Cảm ơn. –

+0

Vì vậy, sau đó bạn sẽ phải tìm ra những gì "ra khỏi" loại là hữu ích nhất. Các danh mục như "trong số {9, 8, 7, 6}" có thể không thân thiện với người dùng vì sẽ đánh thuế một số độc giả cố gắng chuyển đổi những con số đó về tỷ lệ phần trăm. Chúc may mắn! – A5C1D2H2I1M1N2O1R2T1

Trả lời

7

Có một gói FRACTION và khi bạn thay thế/bằng "out of", nó có thể hoạt động. Tuy nhiên, sản lượng khi sử dụng số thập phân là lạ:

library(FRACTION) 
fra(0.66,j=2) 
# [1] "33/50" 
fra(0.66,j=1) 
#"7/1e+08" 

Sửa bởi @Dieter Menne: quên điều này, xem @Ben Bolker dưới đây.

+5

bạn có thể thực hiện việc này với 'MASS :: phân số':' phân số (0,66, chu kỳ = 3) '(và' MASS' đã được đề xuất) –

+0

Krr .... Tôi nên biết, nhưng chỉ có thể không nhớ nơi tìm thấy nó. –

+0

tuyệt vời, @BenBolker –

Các vấn đề liên quan