gpt4 book ai didi

r - 获得连续数据(R)频率表的更好方法?

转载 作者:行者123 更新时间:2023-12-04 10:28:48 26 4
gpt4 key购买 nike

与 df:

df <- data.frame(value=abs(rnorm(100, 25, 5)), status=sample(0:1,100,replace=T))
df$value[sample(1:100,5)] <- NA

我需要得到一个频率(百分比)表(最好返回一个矩阵),如下所示:
value | status(0)  status(1)
----------------------------
<=25 | 23 (23%) 20 (20%)
>25 | 27 (27%) 25 (25%)
NA | 3 (3%) 2 (2%)

我可以使用:
br <- seq(0, 50, 25)
with(df, summary(cut(value[status==0], br, labels=br[-1],
include.lowest=T, ordered_result=T)))
with(df, summary(cut(value[status==1], br, labels=br[-1],
include.lowest=T, ordered_result=T)))

但是是否有一种一次性的方法可以返回上述矩阵?谢谢!

最佳答案

df$value.cut = cut(df$value, breaks=c(0, 25, 100))

> with(df, table(value.cut, status, useNA='ifany'))
status
value.cut 0 1
(0,25] 26 19
(25,100] 26 24
<NA> 3 2

(当然,如果您愿意,可以将其合并为 1 行,但为了更好的可读性,我将其保留为 2 行。)

编辑:如果你想要一个比例表,格式为频率,你可以这样做:
df.tab = with(df, table(value.cut, status, useNA='ifany'))
df.tab[,] = paste(df.tab, ' (', 100*prop.table(df.tab), '%)', sep='')

> df.tab
status
value.cut 0 1
(0,25] 26 (26%) 19 (19%)
(25,100] 26 (26%) 24 (24%)
<NA> 3 (3%) 2 (2%)

关于r - 获得连续数据(R)频率表的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7983840/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com