根据R

时间:2018-03-22 16:53:57

标签: r merge

我有一个表格,格式如下。我简化了它以便说明问题(样本数是随机的,在我的数据中它们总计10000,但结构是相同的)

# 0-5    5-10    10-15    15-20    20-25    25-30    30-35    35-40    40-45    45-50
# 700    1000    1400     1700     1900     1500     1000      300       50      1   

根据输入的最小值和最大值动态创建组。 y指的是我输入的随机样本。我使用以下代码创建了这个表。

groups <- seq(0, 50, (50-0) / 10)
assoc <- cut(sr$y, groups, include.lowest = TRUE)
tab <- tabulate(assoc, nbins = length(groups) -1 )

现在我的目标是将colums(及其样本)与下一个colum(及其样本)合并,如果它没有满足例如: 100个样本。我到了检查哪个:

sn <- which(tab < 60) + 1

现在我不得不合并colums及其示例数据。我真的很感激一些帮助。

1 个答案:

答案 0 :(得分:0)

使用gather包中的separateunitespreadtidyr可以实现一个解决方案。

方法是:

  • 使用Spreadseparatefrom&amp; to
  • 通过将group减去samples的行与下一行合并来分配100
  • 计算min的{​​{1}},from的{​​{1}}和max的{​​{1}}
  • 最后tosum以原始格式获取data.frame。

<强>溶液#1

samples

<强>溶液#2:

如果OP的意图是继续摸索列直到达到目标样本(例如100),那么我们需要一个自定义函数来创建组。该功能如下:

unite

数据

spread