将组中的列值相除并找到该组的标准偏差

时间:2019-09-14 07:08:39

标签: r

enter image description here

我有一个给定的数据框。

该图像包含两列“名称”和“范围”。范围的值从50000到70000,我想潜水2000范围中的范围,例如从5000到52000,无论哪个值落入该组,然后我想找到该组的标准偏差。

我正在使用以下代码

tally(group_by(df,RANGE=cut(RANGE,breaks = seq(50000,70000,by=2000,))) %>%
 ungroup() %>% 
  spread(RANGE,n,fill = 0)

但我无法根据此计算

我希望我的输出如下

RANGE   FREQ S.D
50K-52K 10   1.2
52K-54K 5    0.8
....
...
68K-70K 4    2

2 个答案:

答案 0 :(得分:1)

我们可以使用data.table

library(data.table)
setDT(df)[, .(sd = sd(RANGE), Freq = .N), 
        .(group =  cut(RANGE, breaks = seq(50000,70000,by=2000)))]

答案 1 :(得分:0)

您可以尝试cut RANGE分组,然后每组抽取sd

library(dplyr)

df %>%
  group_by(group = cut(RANGE, breaks = seq(50000,70000,by=2000))) %>%
  summarise(sd = sd(RANGE), 
            Freq = n())

或类似的使用基数R aggregate

df$groups <- cut(df$RANGE,breaks = seq(50000,70000,by=2000))
aggregate(RANGE~groups, df, function(x) c(sd(x), length(x)))