R中的截函数-异或我是重复计数?

R中的截函数-异或我是重复计数?,r,R,根据@Andrie回答的我提出的一个问题,我有一个关于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('

根据@Andrie回答的我提出的一个问题,我有一个关于
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+')
       )
?


感谢由
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+')
   )

LoginRange我喜欢在左侧关闭间隔,因此使用Hmisc包中的cut2。(比总是键入
,right=FALSE,
更容易)@谢谢你的指针。看起来
cut2
还可以做很多其他有趣的事情,比如切割分位数组,或者设置断点以确保每个组的观察次数最少。是的,没错,…我应该添加比键入
breaks=quantile更简单的内容(varname,probs=(0:10)/10,na.rm=TRUE)
忘记参数名和
na.rm
前两次。回答得很好。非常有用!
ggplot2
中的
cut_number
cut_interval
也是覆盖类似背景的有用快捷方式:最后一个问题,如果你有一个预先存在的data.frame
DF
,你可以附加
LoginRange
通过执行
DF$LoginRange
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+')
   )