如何在R中将数据均匀切割成片段?
如何在R中将数据均匀切割成片段?
问题是:我有一个数据集,比如说:\n
a <- c(0,0,0,0,1,1,1,1,1,1)
\n我想把它分成均匀的部分(比如说5个部分)。问题是我不能使用分位数或者切割函数,因为有一些重复值,所以不能设置不同的断点。\n
> quantile(a) 0% 25% 50% 75% 100% 0 0 1 1 1
\n(重复的断点)\n
> cut(a, 5) [1] (-0.001,0.199] (-0.001,0.199] (-0.001,0.199] (-0.001,0.199] (0.801,1] [6] (0.801,1] (0.801,1] (0.801,1] (0.801,1] (0.801,1] Levels: (-0.001,0.199] (0.199,0.4] (0.4,0.6] (0.6,0.801] (0.801,1]
\n(只使用了两个级别)\n我知道我可以生成这样一个向量:\n
b <- c(1,1,2,2,3,3,4,4,5,5)
\n然后用它来进行抽样。或者我可以使用for循环来计算实例数。但是这需要使用循环和一些笨拙的编码。我正在寻找一个简单高效(R风格)的函数,它比这个更好。\n(我可以自己写,但是我不想重复造轮子。)
原因:问题的提问者想知道在R中如何将数据均匀地分割成相等的部分。
解决方法:可以使用dim函数来实现。首先,通过将a的维度重新设置为2行和a的长度除以2,可以将a分成两个部分。然后,可以通过dim函数来查看重新设置后的a的维度。
整理后的文章如下:
在R中如何将数据均匀地分割成相等的部分?
问题的解决方法取决于接下来你要做什么。我喜欢使用dim函数来解决这个问题:
dim(a) <- c(2, length(a) / 2)
这样,a的样子就变成了这样:
[,1] [,2] [,3] [,4] [,5] [1,] 0 0 1 1 1 [2,] 0 0 1 1 1
通过将a的维度重新设置为2行和a的长度除以2,我们可以将a分成两个部分。然后,通过使用dim函数,我们可以查看重新设置后的a的维度。