有什么方法可以在R中使用递归函数时检测小数点吗?

时间:2018-03-26 15:31:20

标签: r statistics

我想知道(每个值/总数的数量)

让我用我的图片文件解释..很难描述

enter image description here

我的数据中 Table2 ,我想知道每个数字占总数的百分比

离)

20row中有两个1.5 - > 1/10 =(0.1) 并且在20行中有四个3.o - > 1/5 =(0.2)

像这样..所以我写了这样的代码

freq2<-rep(0,10) # to make space

for (i in 1:10) {
freq2[i]<-length(table2$xbar2.i.[table2$xbar2.i.==i])
}

让我解释一下我的代码,我让freq2为计数频率腾出空间 并使用递归函数计算每个数字(1.5,2.0 ......等)

但我意识到递归函数可以检测小数点 1.5 2.5 ....

有没有不同的,或更聪明的方法来实现我的目标?

要说清楚,我的目标是知道每个号码在总数中的存在量

ex)1.5 - &gt; 2/20 3.0 - &gt; 4/20,

或者如果这个目标很难,只知道每个数字存在多少1.5 - &gt; 2 3.0 - &gt; 4

感谢阅读..! 我感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

这可以使用dplyr

来实现
k <- nrow(Table2)
freq2 <- Table2 %>%
         group_by(xbar2.i.) %>%
         summarise(Counts = n()) %>%
         ungroup() %>%
         mutate(Prop = Counts/k)

我认为你的目标是什么?

答案 1 :(得分:1)

仅使用base R,这里有两种方法可以满足您的要求。

由于您以错误的格式发布了数据,因此我编写了一个数据框。

set.seed(1)
dat <- data.frame(xbar2.i = rep((2:6)/2, times = sample(5, 5, TRUE)))

现在代码。

tapply(dat$xbar2.i, dat$xbar2.i, FUN = length)/length(dat$xbar2.i)
#        1       1.5         2       2.5         3 
#0.1428571 0.1428571 0.2142857 0.3571429 0.1428571

ave(dat$xbar2.i, dat$xbar2.i, FUN = length)/length(dat$xbar2.i)

答案 2 :(得分:1)

阅读help("prop.table")。在该帮助页面中,尽管该函数的描述充其量只是简洁,但标题却说明了一切:

  

将表格条目表示为边际表的分数

所以以下内容会做你想要的。

 prop.table(table(dat$xbar2.i.))