2012-03-13 116 views
1

任何人都可以幫助我: 我計算了2個不同的值:標準偏差和z分數。在R的csv文件的不同列中寫入多個值

我想弄清楚如何將這些寫入到R中不同列的csv文件中。我有大約90個不同的標準偏差值和90個zscore值。 所以我希望我的所有標準偏差值都在1列中,我所有的Z值都在第2列中。我也想用標準偏差和z分數來標記欄。

現在我計算,並將其寫入到單獨的文件中這樣的循環:

write.table(st_dev, file="st_dev.csv", sep=",", row.names=FALSE, col.names=FALSE, append=TRUE) 
write.table(z_score, file="z.csv", sep=",", row.names=FALSE, col.names=FALSE, append=TRUE) 

編輯:

for(i in 1:130) 
{ 
y=test3[i,3:52] 
z=as.numeric(y) 
average = mean(z) 
st_dev = sd(z) 
dfrm <- data.frame(average=average, st_dev=st_dev) 
write.table(dfrm, file="av_st.csv", sep=",", row.names=FALSE, col.names=TRUE, append=TRUE) 
} 

我怎樣才能在頂部有列標題只有一次而不是打印它爲csv文件中的每個值?謝謝

+0

由於您使用的'附加= TRUE;這兩個答案都需要這種說法了。但是,將兩個值分配給循環內的'data.frame'並且只寫入一次文件要快得多。如果您發佈了更多循環代碼(可能是另一個問題),我相信您可以大幅加快寫入步驟。 – Justin 2012-03-13 19:12:18

回答

3

製作一個數據幀並寫入它。

y=test3[1,3:52] 
z=as.numeric(y) 
average = mean(z) 
st_dev = sd(z) } 
dfrm <- data.frame(average = average, st_dev = st_dev) 
write.table(dfrm, file="z_st.csv", sep=",", row.names=FALSE, col.names=TRUE) 

for(i in 2:130) { y=test3[i,3:52] 
z=as.numeric(y) 
average = mean(z) 
st_dev = sd(z) } 
dfrm <- data.frame(average = average, st_dev = st_dev) 
write.table(dfrm, file="z_st.csv", sep=",", row.names=FALSE, col.names=FALSE)} 
+0

當我嘗試這樣做時,它給了我以下警告:在write.table(dfrm,file =「z_st.csv」,sep =「,」,row.names = FALSE,...:附加列這個文件有2個像我想要的列,但是對於每個標準偏差和zscore值,它將列名寫入文件,因爲我正在計算循環中的值。我怎樣才能把列只有頂部的名字?有沒有辦法做到這一點? – DianaHelen 2012-03-14 12:34:39

+0

我不明白這個評論或賈斯汀上面的一個。我沒有使用append = TRUE,應該只有一個頭。如果您的數據包含兩個獨立的小組,您將分別寫出這些問題,然後您需要在問題中說清楚,然後您需要第三列作爲小組標識符。 – 2012-03-14 18:27:49

+0

我編輯了問題 – DianaHelen 2012-03-15 16:13:04

0

這應該是你在找什麼:

write.table(cbind(st_dev,z_score), 
file="whatever.csv",row.names=F,col.names=c('st_dev','z_score'))