1

我有一个包含几列的表,值从 1 到 8。这些列有不同的长度,所以我在最后用 NA 填充它们。我想转换数据的每一列,所以我会为每一列得到类似的东西:

        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

其中行名是原始列实际长度的百分比(即没有 NA),列名是原始 0 到 8 值,新值是每个百分比中原始值的出现次数。任何想法将不胜感激。

最好的,

林斯

PS/我意识到我原来的信息很混乱。我要转换的数据包含来自时间序列的许多列,如下所示:

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

我需要计算在系列的 0-25%、25-50% 等范围内每个值(1 到 8)的出现频率。Joris 的回答非常有用。我可以处理它。谢谢!

4

1 回答 1

1

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

说0是没有发生,1是发生。然后,您可以将以下小脚本用于一列的结果。将它包装在一个函数中,将它应用到列上,你就会得到你需要的东西。

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)
于 2012-05-10T15:08:12.947 回答