根据我问的一个previous question,我有一个关于cut函数和标签的用法的问题。
我想获得基于用户登录次数范围的汇总统计数据。
以下是我的数据:
# Get random numbers
NumLogin <- round(runif(100,1,50))
# Set the login range
LoginRange <- cut(NumLogin,
c(0,1,3,5,10,15,20,Inf),
labels=c('1','2','3-5','6-10','11-15','16-20','20+')
)现在我有了LoginRange,但我不确定cut函数实际是如何工作的。我想找到用户谁已经登录了1次,2次,3-5次等,同时只包括用户,如果他们在那个范围内。cut函数是否包含3两次(在2个存储桶和3-5个存储桶中)?如果我查看我的示例,我可以看到一个用户登录了3次,但他们的cut为'2‘。我看过文档和我拥有的每一本R书籍,但都没找到。我做错了什么?
另外,作为一个使用问题,我是否应该将LoginRange附加到我的数据框中?如果是这样,那么最好的方法是什么?
DF <- data.frame(NumLogin, LoginRange)谢谢
发布于 2011-11-23 05:15:01
由cut()函数定义的间隔(默认情况下)在右侧闭合。要了解这意味着什么,请尝试以下命令:
cut(1:2, breaks=c(0,1,2))
# [1] (0,1] (1,2]如您所见,整数1包含在范围(0,1]中,而不包括在范围(1,2]中。它不会重复计数,并且对于超出定义的存储箱的任何输入值,cut()将返回值NA。
在处理整数值数据时,我倾向于在整数之间设置断点,以避免绊倒自己。实际上,对您的数据执行此操作(如下所示),会发现第二个和第三个存储箱的名称实际上是错误的,这很好地说明了这一点!
LoginRange <- cut(NumLogin,
c(0.5, 1.5, 3.5, 5.5, 10.5, 15.5, 20.5, Inf),
# c(0,1,3,5,10,15,20,Inf) + 0.5,
labels=c('1','2-3','4-5','6-10','11-15','16-20','20+')
)https://stackoverflow.com/questions/8233846
复制相似问题