如何根据列数将数据帧拆分为单独的数据帧

时间:2015-08-20 17:35:23

标签: r dataframe subset

我有一个数据框,我试图将数据框拆分为单独的数据集,文件名为dataset,作为dataframe的名称

df1 <- 

    `      Name  test1 test2  test3`
            ad1    43    44      42
            ad2    32    32      23
            ad3    21    26      23

所需的输出:3个单独的文件test1.txt,test2.txt,test3.txt

test1.txt = Name  test1
             ad1   43
             ad2   32
             ad3   21

   test2.txt = Name  test2
                 ad1   44
                 ad2   32
                 ad3   26

   test3.txt = Name  test3
                 ad1   42
                 ad2   23
                 ad3   23

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容将其拆分为list

lapply(2:ncol(df1), function(x) df1[c(1, x)])

或者您可以将它们写入新文件(例如csv文件),如下所示:

lapply(2:ncol(df1), function(x) {
  write.csv(df1[c(1, x)], file = sprintf("%s.txt", names(df1[x])))
})

答案 1 :(得分:1)

简单的东西就是循环。

df <-data.frame(Name=c("ad1","ad2","ad3"),test1=c(43,32,21),
test2=c(44,32,26),test3=c(42,23,23))

for (i in 2:ncol(df)) {
        curdf<-subset(df,,select=(c(1,i)))
        write.table(curdf, paste(names(df)[i],".txt",sep=""), sep="\t")
}

答案 2 :(得分:1)

此循环应该有效

for(i in 1:(length(colnames(b))-1)){
  temp <- as.data.frame(cbind(b$Name,b$test1))
  colnames(temp) <- c("Name",paste("test",i,sep=""))
  write.csv(temp,file=paste("test",i,".txt",sep=""))
}

这样,如果您的文件和列数发生变化,它仍然可以正常工作