2013-12-21 34 views
0

添加柱狀圖頻率數據我加載了隨機數如何從加載CSV文件中的R

RandomNumbers <- read.csv("~/Documents/RandomNumbers.csv") 

現在的兩列的文件,我可以做一些事情使那些數據列的一個直方圖像這樣:

x <- hist(Cell2, breaks=seq(0,20000, by=1000) 

我的最終目標,然而,是簡單地得到直方圖頻率數據,我可以做這個

x$breaks 
x$counts 
獲取

,並將每個只有計數的行的值添加到來自其他表列的計數列中。

我想基本上平均或添加兩個單獨的直方圖,這些直方圖是從我的CSV文件中加載的兩列數字生成的。

最終,我將有超過2列/直方圖添加在一起,從而創建一個更平滑的分佈。

我如何在R中最輕鬆地做到這一點?請記住我對R很新,所以如果可能的話,我更喜歡基本的功能而不是更好的東西。

+0

這是什麼意思:「和我的其他表列中添加只是計數的計數列各行的每個值「?我無法理解你想要得到什麼。 - 沒關係,我想我明白了。 –

回答

1

這應該做到這一點,只需將文件名,列中要創建直方圖數據的文件以及直方圖的中斷點放入即可。輸出文件變量「中斷」僅包含垃圾箱的下限。

 

>x = pmin(exp(rnorm(20)), 20) 
>y = pmin(exp(rnorm(20)), 20) 
>write.csv(data.frame(x,y),"/Users/foo/temp/randcsv.csv", row.names=FALSE) 


>sumhists = function(file, cols=1:2, brk){ 
> dat = read.csv(file, stringsAsFactors=FALSE) 
> nbins = length(brk)-1 
> nvars = length(cols) 
> newdat = matrix(NA, nrow=nbins, ncol=nvars+1) 
> newdat[,1] = brk[1:nbins] 
> for (col in cols) { 
> h=hist(dat[,col], plot=FALSE, breaks=brk) 
>  newdat[,col+1] = h$counts 
> } 
> outdat = data.frame(newdat) 
> names(outdat) = c("breaks", names(dat)[cols]) 
> outdat$total = rowSums(outdat[,-1]) 
> return(outdat) 
> } 

>#add countsd 
>sumhists("/Users/foo/temp/randcsv.csv", cols=1:2, brk=seq(0,20, by=1)) 
 
    breaks x y total 
1  0 12 13 25 
2  1 3 7 10 
3  2 2 0  2 
4  3 2 0  2 
5  4 0 0  0 
6  5 0 0  0 
7  6 1 0  1 
8  7 0 0  0 
9  8 0 0  0 
10  9 0 0  0 
11  10 0 0  0 
12  11 0 0  0 
13  12 0 0  0 
14  13 0 0  0 
15  14 0 0  0 
16  15 0 0  0 
17  16 0 0  0 
18  17 0 0  0 
19  18 0 0  0 
20  19 0 0  0 
0

有幾種簡單的方法可以做到這一點。如果只有兩列或三列,您可以手動添加。

dataA=rnorm(50) 
dataB=rnorm(50) 
A=hist(dataA,breaks=(seq(-6,6,by=1)))$counts 
B=hist(dataB,breaks=(seq(-6,6,by=1)))$counts 
avedata=mean(A+B) 
avedata 

或者,如果有幾列,您可以使用一個forapply型功能。使用類似這樣的(未測試)

avedata=NULL 
datamatrix=matrix(NA,length("breaks"),"number of cols") 
for(i in 1:"number of cols"){datamatrix[,i]=hist(yourdata[,i],breaks= (seq(-6,6,by=1))$counts)} 
for(i in 1:length("breaks")){avedata[i]=datamatrix[i,]} 
avedata 
0

CRAN上的HistogramTools軟件包具有許多用於將直方圖添加到一起並以其他方式處理直方圖的功能。對於2級或更多的直方圖加在一起,你會只使用AddHistograms功能是這樣的:

hist.1 <- hist(c(1,2,3,4), plot=FALSE) 
hist.2 <- hist(c(1,2,2,4), plot=FALSE) 
hist.sum <- AddHistograms(hist.1, hist.2) 
hist.3 <- hist(c(1,2,2,4), plot=FALSE) 
hist.sum <- AddHistograms(hist.1, hist.2, hist.3)