2011-02-28 3 views
7

두 개의 헤더 행, 열 이름에 한 줄, 열 이름에 대한 설명 한 줄을 사용하여 data.frame을 csv로 내보낼 수 있습니까? 예를 들어,두 개의 헤더 행을 사용하여 csv를 작성 하시겠습니까?

d <- data.frame(a=c(1,3,4), b=c(5,6,7)) 
comment(d$a) <- "MWh" 
comment(d$b) <- "%" 
write.csv(d, "myfile.csv", ???) 

아무런 힌트를 주셔서 감사합니다.

+1

'write.table'과'append = TRUE'를 사용하십시오. –

+0

다른 방법으로 테이블에 주석을다는 것이 좋습니다. 당신의 csv 파일이 스프레드 시트에서 파일을 여는 사람에 의해 사용된다면 당신은 괜찮을 것입니다. 그러나 누군가 데이터베이스 나 R로 읽는 것과 같은 유용한 작업을 원한다면 헤더를 구성하는 두 개의 행이 있다는 사실이 그들에게 많은 고통을 줄 것입니다. 즉, 데이터 프레임에 설명을 추가하는 방법을 찾고 싶습니다. 데이터 프레임이 들어있는 .Rdata 파일에 설명이나 단위를 추가하는 방법을 알고 있습니까? – Farrel

+0

고유 한 문자 (예 :/* 또는 #)로 시작하는 몇 개의 열을 추가하기 만하면됩니다. 첫 번째 문자를 사용하여 데이터를 읽을 때 (또는 R로) 또는 첫 번째 x 행을 건너 뛸 때 쉽게 건너 뛸 수 있습니다. '싱크대 '가 그걸 극복 할 수있는 것처럼 보입니다. –

답변

7

, 나는 (@Chase에서 제공하는 대답은 문자 데이터 형식을 변경) 우리가 쉽게 한 줄에 그것을 할 수 있다고 생각하지 않지만 우리는 names(d) 쓰기 몇 가지 조작과 먼저 파일 밖으로 두 의견을 통해 그것을 다음 우리는 단지에 이름과 코멘트를 쓴 파일을 추가, csv로 데이터 라인을 작성하는 write.table()를 사용 할 수 있습니다

write.csv3 <- function(d, file) { 
    opts <- options(useFancyQuotes = FALSE) 
    on.exit(options(opts)) 
    h1 <- paste(dQuote(c("", names(d))), collapse = ",") 
    h2 <- paste(dQuote(c("", comment(d$a), comment(d$b))), collapse = ",") 
    writeLines(paste(h1, h2, sep = "\n"), file) 
    write.table(d, file, sep = ",", append = TRUE, col.names = FALSE) 
} 

다음은 예입니다.

> d <- data.frame(a=c(1,3,4), b=c(5,6,7)) 
> comment(d$a) <- "MWh" 
> comment(d$b) <- "%" 
> d 
    a b 
1 1 5 
2 3 6 
3 4 7 
> write.csv3(d, file = "myfile.csv") 
0 다음 파일을 생성

은 :

$ cat myfile.csv 
"","a","b" 
"","MWh","%" 
"1",1,5 
"2",3,6 
"3",4,7 

@ 체이스의 대답에 의해 생산에 비해 : 두 사이

$ cat output.csv 
"","a","b" 
"1","MHh","%" 
"2","1","5" 
"3","3","6" 
"4","4","7" 

, 당신은 충분한 옵션이 있어야합니다.

+0

생성 된 데이터를 R로 다시 읽으려는 경우 데이터는'factor' 또는'character' 클래스 ('stringsAsFactors'에 따라 다름)가 될 것입니다. 그러나 이것은 R의 일방적 인 것으로 추정됩니다 다른 것. –

+0

그레이트 솔루션; 이것은 많은 도움이됩니다! –

4

rbind() 고객님의 의견을 data.frame 상단으로 보내시기 전에 옵션을 보내주십시오. 새 객체를 만들면 기존 열의 구조 나 클래스에 영향을주지 않습니다. 당신은 데이터의 숫자 특성을 유지하려면

d <- data.frame(a=c(1,3,4), b=c(5,6,7)) 
output <- rbind(c("MHh", "%"), d) 
write.csv(output, "output.csv") 
관련 문제