在R中将变量切成块
我试图将我的数据D分为3部分:[0-4]、[5-12]、[13-40]见下图。但我想知道如何准确地定义我的切入点来实现这一点 这是我的数据和R代码:在R中将变量切成块,r,function,dataframe,statistics,categorical-data,R,Function,Dataframe,Statistics,Categorical Data,我试图将我的数据D分为3部分:[0-4]、[5-12]、[13-40]见下图。但我想知道如何准确地定义我的切入点来实现这一点 这是我的数据和R代码: D <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/t.csv", h = T) table(cut(D$time, breaks = c(0, 5, 9, 12))) ## what should breaks be? # (0,5] (5,9
D <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/t.csv", h = T)
table(cut(D$time, breaks = c(0, 5, 9, 12))) ## what should breaks be?
# (0,5] (5,9] (9,12] # cuts not how I want the 3 pieces .
# 228 37 10
符号a,b]表示>a和符号a,b]表示>a和这将生成正确的桶,但间隔符号需要调整。假设所有时间都是整数。可能需要手动调整标签-每次使用右开间隔符号时,请使用闭合间隔符号替换因子标签。使用你最好的字符串“魔术” 就我个人而言,我喜欢确保涵盖所有可能性。也许这个过程的未来数据可能会超过40?我喜欢在我所有的切割中加上+Inf的上限。这可以防止NA进入数据 削减所需要的是一个“仅限整数”选项 F=cutD$time,c0,5,13,40,include.lower=TRUE,right=FALSE 下面的级别是硬编码的,但您可以编写一个循环来翻转所有标签 形式为[m,n到[m,n-1] levelsF[1:2]=c'[0,4]','[5,12]' 通常在得到最终结果之前会有更多的分析,所以在工作接近完成之前,我不会为标签操心太多 这是我的结果
> table(F)
F
[0,4] [5,12] [13,40]
319 47 20
这将生成正确的存储桶,但需要调整间隔符号。假设所有时间都是整数。可能需要手动调整标签-每次使用正确的开放间隔符号时,请使用闭合间隔符号替换因子标签。使用最佳字符串“魔术” 就我个人而言,我喜欢确保所有的可能性都被涵盖。也许这个过程中的未来数据可能会超过40?我喜欢在我的所有切割中加入+Inf的上限。这可以防止NA进入数据 削减所需要的是一个“仅限整数”选项 F=cutD$time,c0,5,13,40,include.lower=TRUE,right=FALSE 下面的级别是硬编码的,但您可以编写一个循环来翻转所有标签 形式为[m,n到[m,n-1] levelsF[1:2]=c'[0,4]','[5,12]' 通常在得到最终结果之前会有更多的分析,所以在工作接近完成之前,我不会为标签操心太多 这是我的结果
> table(F)
F
[0,4] [5,12] [13,40]
319 47 20
R可以将整数与浮点进行比较,如
> 6L >= 8.5
[1] FALSE
因此,可以使用浮动作为剪切中的打断,例如在中
table(cut(D$time, breaks = c(-.5, 4.5, 12.5, 40.5)))
对于整数,这将填充[0-4]、[5-12]、[13-40]的桶定义,而不必考虑方括号和圆括号之间的关系
另一个奇特的选择是围绕你的平均值进行聚类,如
D <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/t.csv", h = T)
D$cluster <- kmeans(D$time, center = c(4/2, (5+12)/2, (13+40)/2))$cluster
plot(D$time, rnorm(nrow(D)), col=D$cluster)
R可以将整数与浮点进行比较,如
> 6L >= 8.5
[1] FALSE
因此,可以使用浮动作为剪切中的打断,例如在中
table(cut(D$time, breaks = c(-.5, 4.5, 12.5, 40.5)))
对于整数,这将填充[0-4]、[5-12]、[13-40]的桶定义,而不必考虑方括号和圆括号之间的关系
另一个奇特的选择是围绕你的平均值进行聚类,如
D <- read.csv("https://raw.githubusercontent.com/rnorouzian/m/master/t.csv", h = T)
D$cluster <- kmeans(D$time, center = c(4/2, (5+12)/2, (13+40)/2))$cluster
plot(D$time, rnorm(nrow(D)), col=D$cluster)
您应该正确添加两个传统参数,并在代码中包含.lower
table(cut(D$time, breaks = c(0, 5, 13, 40), right=FALSE, include.lowest = TRUE))
如果right=FALSE,则应在左侧关闭间隔,在右侧打开间隔,以便获得所需的结果。include.LOWER=TRUE导致此处的最高中断值40包含在最后一个间隔中。
结果:
反之亦然,你可以写:
table(cut(D$time, breaks = c(0, 4, 12, 40), right=TRUE, include.lowest = TRUE))
结果是:
[0,4] (4,12] (12,40]
319 47 20
两者都表示您正在寻找的内容:
[0,4] [5,12] [13,40]
319 47 20
您应该正确添加两个传统参数,并在代码中包含.lower
table(cut(D$time, breaks = c(0, 5, 13, 40), right=FALSE, include.lowest = TRUE))
如果right=FALSE,则应在左侧关闭间隔,在右侧打开间隔,以便获得所需的结果。include.LOWER=TRUE导致此处的最高中断值40包含在最后一个间隔中。
结果:
反之亦然,你可以写:
table(cut(D$time, breaks = c(0, 4, 12, 40), right=TRUE, include.lowest = TRUE))
结果是:
[0,4] (4,12] (12,40]
319 47 20
两者都表示您正在寻找的内容:
[0,4] [5,12] [13,40]
319 47 20
在您编写的代码示例中,使用9英寸的分隔符并不能按照您想要的方式切割,而其中没有9英寸。除了多余的9之外,您可以指定问题是什么吗?在您编写的代码示例中,使用9英寸的分隔符并不能按照您想要的方式切割,其中没有9英寸。除了多余的9之外,您可以指定w吗问题是什么?