2017-09-10 1 views
1

큰 csv 파일 new.dat에 100s의 열 이름이 있습니다. .csv으로 쓰여진 새로운 하위 집합의 첫 번째 열을 유지하면서 열 이름 당 new.dat을 분할하려고합니다.큰 데이터 프레임을 열별로 나누고 개별 CSV에 쓰는 방법

new.dat <- structure(list(Sequence = c("AAAAAACCTGTTCTGATA", "AAAAAAGGCTGTTACTGAGC", 
"AAAAACATTCGAGCGAGATCTCT", "AAAAACCTCGACTTCGGAAG", "AAAAAGCTCGTAGTTGAA", 
"AAAAAGCTCGTAGTTGAAC"), WT1 = c("84", "104", "80", "35", "112", 
"350"), WT2 = c("149", "478", "502", "186", "577", "911"), AGO1 = c("32", 
"147", "433", "51", "258", "353"), AGO2 = c("37", "222", "355", 
"85", "408", "420"), DCL1 = c("56", "185", "291", "48", "167", 
"273"), DCL2 = c("59", "176", "294", "31", "185", "245"), NAs = c(0L, 
0L, 0L, 0L, 0L, 0L)), .Names = c("Sequence", "WT1", "WT2", "AGO1", 
"AGO2", "DCL1", "DCL2", "NAs"), row.names = c(NA, 6L), class = "data.frame") 

new.dat

그래서 new.dat 데이터의 결과는 일곱 개 CSV 파일이 있어야합니다. SequenceWT1 열과 제 CSV WT1.csv, 등등과 Sequence WT2 열과 함께 제 CSV 파일 WT2.csv ..

이것은 I가 시도하는 코드이다. 제가 여기서 누락 된 것을 제안하십시오. 감사합니다.

for (name in colnames(new.dat[-1])){ 
    tmp=subset(new.dat$Sequence, colnames==name) 
    fn= name 
    #Save the CSV file 
    write.csv(tmp,fn,row.names=FALSE) 
} 
+0

는 것을 의미 했 파일에 쓸 수 있습니다 여러 개의 'WT1' 열이 있습니까? 그렇다면 패턴이 있습니까? 이것들이 접두사입니까? – akrun

+0

@akrun 아니요, 모든 새로운 csv 파일에 '시퀀스'열과 추가 열을 보관하고 싶습니다. 열 이름은 고유하고 반복적이지 않습니다. – MAPK

+0

이 경우, 첫 번째 열, 즉 lst <- Map (function (x, y, z) setNames (cbind (x, y), c ("Sequence", z))을 사용하여 열을 cbind하고 반복하십시오. (new.dat [1]), new.dat [-1], 이름 (new.dat) [- 1])'을 읽고 csv에 쓰십시오. – akrun

답변

3

우리는 lapply와 첫 번째를 제외하고 열 이름을 통해 단지 루프의 '순서'열을 포함하여 데이터 세트의 열을 서브 세트하고

lapply(names(new.dat)[-1], function(nm) 
    write.csv(new.dat[c("Sequence", nm)], 
     paste0(nm, ".csv"), quote = FALSE, row.names = FALSE)) 
2

열 색인을 사용하는 것이 더 쉽습니다.

for (i in 2:ncol(new.dat)) { 
    tmp=new.dat[,c(1,i)] 
    name=colnames(new.dat)[i] 
    fn = paste0(name,".csv") 
    print(fn) 
    #Save the CSV file 
    write.csv(tmp,fn,row.names=FALSE) 
} 
+0

아니요 작동하지 않습니다. – MAPK

+0

죄송합니다. 파일 이름을 변경하는 부분을 추가하는 것을 잊어 버렸습니다. 지금 일해야합니다. – JMenezes

관련 문제