我有一个给定的数据框。
该图像包含两列“名称”和“范围”。范围的值从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
答案 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)))