问题描述
在下面,我将提供一些帮助。这是一些玩具数据:
UINT_MAX
这个想法是在进度的每一步中,将数据逐步分成df <- data.frame(id1 = c(1,1,2,3,3),V1 = c(5,10,5,15,30,1),V2 = c(1,7,4,8,3))
组,并在新的g
列中分配y
列中组内的最大值。
不太严格的标准。在这种情况下,有2个步骤。
匹配应继续进行,直到每个组有5个元素或完成所有步骤为止。
第一步很简单-具有相同V2
的行应属于同一组:
id1
第二步,我想将df1 <- data.frame(id1 = c(1,g = c(1,y = c(2,8))
彼此在5个单位内的值配对或在步骤1中配对。
V1
请注意,应该发生两件事:
-
具有
df2 <- data.frame(id1 = c(1,2),y = c(7,8)).
和id1 = 1
的值被分组在一起。发生这种情况的原因是第二行和第三行:id2 = 2
。但是,即使对于第2行和第4行或第3行和第4行来说,这不是正确的,但仍应将它们分组在一起,因为在第一步中分组的观察结果在第二步中不应不匹配。 -
带有
|10 - 5| <= 5
的组不会更改,因为它已经有5个组成部分。
OBS:我不太关心每个组中的名称id1 = 3
,只关心g
。
我该如何运行一个代码,以使更多步骤和更复杂的大型数据集实现这一目标 每个步骤的条件?
我知道如何独立执行每种分类,但是不知道如何使更新过程正常进行。我希望使用y
解决方法
第一部分的答案可以通过使用dplyr
或tidyverse
df <- data.frame(id1 = c(1,1,2,3,3),V1 = c(5,10,5,15,30,1),V2 = c(1,7,4,8,3))
df1 <- df1 %>% group_by(id1) %>% mutate(g= id1,y= max(V2))
我不太了解第二部分。