2012-05-10 52 views
1

我有一个包含多个列的表,其值为1到8.列的长度不同,所以我在末尾填充了NAs。我想转换数据的每一列,所以我会得到这样的事情为每列:R bin是列长度的百分比

 1 2 3 4 5 6 7 8 
0-25 1 0 0 0 0 1 0 2 
25-50 5 1 2 0 0 0 0 1 
50-75 12 2 2 3 0 1 1 1 
75-100 3 25 1 1 1 0 0 0 

其中行名称是原列(即不NAS)的实际长度的百分比时,列名称是原始的0到8个值,新值是每个百分比中原始值的发生次数。任何想法将不胜感激。

最佳,

林塞

PS /我意识到我原来的信息是非常混乱。我要变换的数据包含的列数从时间序列是这样的:

1 
1 
8 
1 
3 
4 
1 
5 
1 
6 
2 
7 
1 
NA 
NA 

和我需要在0-25%,以计算每个值的出现次数的(1〜8)的频率,25-该系列的50%等等。乔里斯的回答非常有用。我可以处理它。谢谢!

+1

什么是你正在使用的原始数据? –

+0

什么发生次数?数据是如何编码的(0-1或NA-1)。这在解决这个问题上有很大的不同。 –

回答

1

由于缺乏一些信息,我可以为您提供这样的:

说0没有出现时,1是occurence。然后你可以使用下面的小脚本来得到一列的结果。将它包装在一个函数中,将其应用到列上,并获得所需的内容。

x <- c(1,0,0,1,1,0,1,0,0,0,1,0,1,1,1,NA,NA,NA,NA,NA,NA) 

prop <- which(x==1)/sum(!is.na(x))*100 
result <- cut(prop,breaks=c(0,25,50,75,100)) 
table(result)