我有一个数据框,我试图将数据框拆分为单独的数据集,文件名为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
答案 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=""))
}
这样,如果您的文件和列数发生变化,它仍然可以正常工作