我有一个包含正数,我想斌/离散化矢量X。对于这个载体,我想这些数字[0,10)显示,就像他们在载体存在,但数量[10,∞)是10+。

我使用:

x <- c(0,1,3,4,2,4,2,5,43,432,34,2,34,2,342,3,4,2)
binned.x <- as.factor(ifelse(x > 10,"10+",x))

但这种感觉klugey给我。有谁知道一个更好的解决方案或采用不同的方法?

有帮助吗?

解决方案

如何cut

binned.x <- cut(x, breaks = c(-1:9, Inf), labels = c(as.character(0:9), '10+'))

这产生:

 # [1] 0   1   3   4   2   4   2   5   10+ 10+ 10+ 2   10+ 2   10+ 3   4   2  
 # Levels: 0 1 2 3 4 5 6 7 8 9 10+

其他提示

您的问题是不一致的。结果 在描述10属于“10+”基团,但在代码10分离水平。 如果10在 “10+” 基团,那么你代码应

as.factor(ifelse(x >= 10,"10+",x))

在这种情况下,你可能会截断数据为10(如果你不想要一个因素):

pmin(x, 10)
# [1]  0  1  3  4  2  4  2  5 10 10 10  2 10  2 10  3  4  2 10
x[x>=10]<-"10+"

这会给你字符串矢量。您可以使用as.numeric(x)转换回数字(“10+”成为NA),或as.factor(x)得到上面你的结果。

请注意,这将改变原有的载体本身,所以你可能要复制到另一个载体和工作这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top