如何获得特定值的频率?

问题描述 投票:0回答:1

我有1000行和10000列的大型数据集。我用下面的代码举一个简短的例子:

V1 = c(1,2,1,1,NA,1,0,2,2,1,0)
V2 = c(0,2,NA,2,1,2,0,1,NA,0,0)
V3 = c(3,1,1,1,NA,1,0,2,2,1,2)
V4 = c(1,2,NA,1,0,2,0,2,NA,2,0)
datos =data.frame(cbind(V1,V2,V3,V4))

我的每一列都有值=“ 0”,“ 1”或“ 2”。我需要获得每列中“ 0”和“ 1”的频率。请注意,数据集也具有“ NA”值,在估算频率时我不必考虑这些值。

例如,对于V1,“ 0”的频率为= 2/10 = 0.2,而“ 1”的频率为= 5/10 = 0.5。因此,总和为0,2 + 0,5 = 0,7。

我认为apply(datos, 2, x)会有所帮助,但我不确定function (x)会如何。

有人知道解决此问题的方法吗?

谢谢

r frequency
1个回答
0
投票
我们可以将NA的0或1以外的值replace设为table,获得频率,然后通过prop.table转换成比例]]

sapply(datos, function(x) prop.table(table(replace(x, !x %in% 0:1, NA))))

© www.soinside.com 2019 - 2024. All rights reserved.