0

我在编写输出数据时遇到问题。我做了这样的指示:

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”的种类,但没有奏效。

我应该怎么办?

4

1 回答 1

0

正如评论中所建议的,为每个值分配一个 data.frame 列,然后 write.csv 应该可以工作:

df <- data.frame(meani = mean(i), sdi = sd(i))
write.csv(df,'df.csv')

但是再读一遍可能你忘了指定,打开文件时要读哪种分隔符。我建议使用sep="\t"创建一个制表符分隔的文件并打开它。

于 2013-11-11T12:42:04.760 回答