如何根据列数将数据框拆分为单独的数据框
how to split a dataframe in to separate dataframe based on the number of columns
我有一个数据框,我正在尝试将数据框拆分为单独的数据集,并将数据集的文件名作为数据框的名称
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
您可以将它拆分成一个 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])))
})
简单的东西就是一个循环。
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")
}
这个循环应该可以工作
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=""))
}
如果您的文件数和列数发生变化,这种方式仍然有效
我有一个数据框,我正在尝试将数据框拆分为单独的数据集,并将数据集的文件名作为数据框的名称
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
您可以将它拆分成一个 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])))
})
简单的东西就是一个循环。
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")
}
这个循环应该可以工作
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=""))
}
如果您的文件数和列数发生变化,这种方式仍然有效