我在编写输出数据方面遇到了问题。我做了这样的指示:
myfiles <- list.files("D:/dolnyslask/2011/after", pattern=".csv")
for (j in 1:length(myfiles)) {
thisfile <- read.csv(myfiles[j], header = T, sep=";", na.string="NA", comment.char="")
for (i in thisfile) {
x = sd(i, na.rm=T)
y = length (na.omit(i))
if (y == 0) {
cat(paste(rep(c("-"),11)), file=myfiles[j], append=T, sep="\t")
cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")
} else if (is.na(x) || x == 0) {
cat(paste(format(min(i, na.rm=T)), format(mean(i, na.rm=T)), format(max(i, na.rm=T)), format(median(i, na.rm=T)), format(sd(i, na.rm=T)), format(mean(i, na.rm=T)), format(mean(i, na.rm=T)), format(mean(i, na.rm=T) - mean(i, na.rm=T)), format(mean(i, na.rm=T) - mean(i, na.rm=T)), format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T)), format((mean(i, na.rm=T) - mean(i, na.rm=T))/median(i, na.rm=T)), digits=5), file=myfiles[j], append=T, sep="\t")
cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")
} else {
cat(paste(format(min(i, na.rm=T)), format(mean(i, na.rm=T)), format(max(i, na.rm=T)), format(median(i, na.rm=T)), format(sd(i, na.rm=T)), format(t.test(na.omit(i), conf.level=0.90)$conf.int), format(t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T)), format((t.test(na.omit(i), conf.level=0.90)$conf.int - mean(i, na.rm=T))/median(i, na.rm=T)), digits=5), file=myfiles[j], append=T, sep="\t")
cat(paste(length(na.omit(i))), file=myfiles[j], append=T, sep="\n")
}
}
}
我的csv文件如下所示:
NA NA NA NA NA NA 2 NA NA 12.1 NA
NA NA NA NA NA NA 4 NA NA 10 NA
NA NA NA NA NA NA 12.1 NA NA 8.5 NA
NA NA NA NA NA NA 14.8 NA NA 6 NA
NA NA NA NA NA NA 15 NA NA 7.4 NA
R给我一个好的结果,但只在一个单元格中(在csv文件中) - 但我需要每个分开的列。我试图改变“sep”上的种类,但它没有用。
我该怎么办?
答案 0 :(得分:0)
正如评论中所建议的,为每个值分配一个data.frame列然后write.csv应该可以工作:
df <- data.frame(meani = mean(i), sdi = sd(i))
write.csv(df,'df.csv')
但是再次阅读也许你忘了指定,打开文件时要阅读哪种分隔。我建议使用sep="\t"
创建一个tab-delimited文件并打开它。