2013-06-13 36 views
5

Tôi cần tạo một khung dữ liệu hoặc dữ liệu có thể có số chữ số thập phân khác nhau trên mỗi cột.Viết một khung dữ liệu với số chữ số thập phân khác nhau trên mỗi cột trong R

Ví dụ:

Scale  Status 
1.874521 1 

Cần phải được in trong một CSV như:

Scale,  Status 
1.874521, 1.000 

này có phải là một giá trị số như tôi đã cố gắng format(DF$status, digits=3)as.numeric(format(DF$status, digits=3)) tuy nhiên điều này chuyển đổi nó để các ký tự khi được xuất sang CSV có dấu ngoặc kép ".

Biểu dữ liệu thực tế của tôi có nhiều cột với số lượng thập phân khác nhau Các yêu cầu bắt buộc cũng như các ký tự cần phải được trích dẫn kép nên tôi không thể áp dụng một thay đổi lớn cho hệ thống.

+4

'write.csv' có tùy chọn' trích dẫn' mà bạn có thể đặt thành 'FALSE'. –

+2

bạn có thể sử dụng 'quote = FALSE' trong' write.csv' ?? – Arun

+1

'quote = FALSE' chắc chắn sẽ làm những gì anh ta yêu cầu. Tôi chỉ tự hỏi nếu trong 'data.frame' anh ta cũng có các cột ký tự cần được in _with_ dấu ngoặc kép. – Michele

Trả lời

6

Tùy chọn tốt hơn so với thực hiện quote=FALSE, là thực sự chỉ định cột nào bạn muốn được trích dẫn vì tham số quote có thể là vectơ của chỉ mục cột mà bạn muốn được trích dẫn. Ví dụ.

d = data.table(a = c("a", "b"), b = c(1.234, 1.345), c = c(1, 2.1)) 
d[, b := format(b, digits = 2)] 
d[, c := format(c, nsmall = 3)] 
d 
# a b  c 
#1: a 1.2 1.000 
#2: b 1.3 2.100 

write.csv(d, 'file.csv', quote = c(1,2), row.names = F) 
#file.csv: 
#"a","b","c" 
#"a","1.2",1.000 
#"b","1.3",2.100 
+0

Cảm ơn bạn đã đánh giá cao điều này. Tôi có một giải pháp làm việc bây giờ bằng cách sử dụng 'as.data.table (DF [, STATUS: = format (STATUS, nsmall = 3)])' và thêm vectơ vào tham số quote. Giải pháp rất đơn giản và thanh lịch. cảm ơn. – Richard

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