2009-10-17 40 views
38

Tôi đang xuất một khung dữ liệu tới html qua xtable. Tôi muốn thêm dấu phẩy vào các số trong một vài cột của bảng. Tôi đã tìm ra trước khi tôi thực hiện bản hack riêng của mình, tôi sẽ kiểm tra xem có cách nào được xây dựng để làm điều này không.thêm dấu phẩy vào số cho đầu ra

Trả lời

47

Bạn có thể muốn xem xét việc chuyển cột sử dụng formatC

> formatC(1:10 * 100000, format="d", big.mark=",") 
[1] "100,000" "200,000" "300,000" "400,000" "500,000" "600,000" 
[7] "700,000" "800,000" "900,000" "1,000,000" 
12

lớn nhờ Jonathan Chang cho câu trả lời của mình. formatC có vẻ là một chức năng cực kỳ hữu ích. Điều này đã truyền cảm hứng cho tôi đọc tài liệu về nó, trong đó tôi tìm thấy prettyNum, hóa ra đó là một giải pháp khá thanh lịch cho một vấn đề tương tự mà tôi gặp phải. Dưới đây là ví dụ khả thi tối thiểu về những gì tôi đã làm để thêm dấu phẩy vào các số trong khung dữ liệu có tên là enrollment.summary.

xtable(prettyNum(enrollment.summary,big.mark=","))

+1

'formatC' là một [function] (https://stat.ethz.ch/R-manual/R-devel/library/base/html/formatc.html) trong gói 'base', không phải là gói. Trong tương lai, vui lòng bao gồm các ví dụ tái sản xuất và hiển thị hành vi trong câu trả lời của bạn. Ví dụ, hãy xem xét việc thay thế 'enroll.summary' bằng' mtcars': 'prettyNum (mtcars, big.mark =", ")' trả về một ma trận ký tự trong đó các cột tương ứng với các cột trong 'mtcars' data.frame, và các số là in. –

+2

Cũng lưu ý rằng 'prettyNum' đệm đầu ra của bạn với không gian trống (có khả năng không mong muốn): prettyNum (c (123,1234), big.mark =", "); cung cấp "123" "1,234". thêm preserve.width = "none" để ngăn chặn điều này. – MichaelChirico

7

Bạn cũng có thể thử sử dụng lập luận fuction 'format.args'

## Demonstration of additional formatC() arguments. 
    print(fm1.table, format.args = list(big.mark = "'", decimal.mark = ",")) 

từ đây

https://cran.rstudio.com/web/packages/xtable/xtable.pdf

+0

Điều này rất hữu ích vì nó cho phép người dùng giữ nguyên định dạng ban đầu của các cột. – dayne

2

để định dạng một số tóm tắt từ dplyr, đây là soạn sẵn mã:

df %>% summarise(mu=mean(big_values), min=min(big_values), max=max(big_values)) %>% mutate_each(funs(prettyNum(., big.mark=",")))

2

Đây là một câu trả lời muộn, nhưng bạn cũng có thể sử dụng scales::comma_format như sau:

library(scales) 
values <- c(1000000.789, 8888.23) 
comma_format(digits = 12)(values) 
## [1] "1,000,000.789" "8,888.230" 

Đối với giá trị chỉ số nguyên, bạn chỉ có thể sử dụng dấu phẩy:

int_vals <- c(1234, 5678) 
comma(int_vals) 
## [1] "1,234" "5,678" 
Các vấn đề liên quan