我有一个包含多个列的表,其值为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的回答非常有用。我可以继续努力。谢谢!
答案 0 :(得分: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)