【发布时间】:2019-04-04 14:08:34
【问题描述】:
我正在尝试使用随机重复的“块”来组织患者数据的电子表格。 不幸的是,数据行是随机重复的,给了我重复的“块”。我需要在保留原始顺序的同时删除重复块。
这是一个示例:
+---------+-----+----------+
| patient | age | children |
+---------+-----+----------+
| x | 30 | g |
| x | 30 | b |
| x | 30 | g |
| x | 30 | b |
| x | 30 | g |
| x | 30 | b |
| y | 25 | g |
| y | 25 | b |
| y | 25 | b |
| y | 25 | g |
| y | 25 | b |
| y | 25 | b |
+---------+-----+----------+
可以看到,患者“x”块(有 2 个孩子)重复了 3 次,患者“y”块(有 3 个孩子)重复了两次。重复块的数量是随机的。
这是我的目标: 保持孩子的顺序很重要
+---------+-----+----------+
| patient | age | children |
+---------+-----+----------+
| x | 30 | g |
| x | 30 | b |
| y | 25 | g |
| y | 25 | b |
| y | 25 | b |
+---------+-----+----------+
我首先在 excel 中尝试了这个: 第 1 步:为所有行提供唯一标识符,以保留子项的顺序 第 2 步:尝试删除重复项,但这对于有 2 个女孩的患者“y”来说是个问题,决赛桌删除了其中一个...
我通常在 R 中进行分析,所以如果有人可以提出建议,这里的 dplyr 解决方案会很棒
除了以下,我迷路了。有没有办法识别独特的群体?
dat %>% group_by(patient)
【问题讨论】:
-
你试过
unique(df)吗? -
您没有其他信息吗?例如,我们可以想象一个 z 患者在数据框中有 6 个男孩,并且有重复的块。我们无法先验知道他有多少个男孩(1、2、3 或 6 个男孩,分别为 6、3、2 或没有重复)。我们应该尽量减少孩子的数量吗?
-
我没有其他信息。不幸的是,数据导出创建了块的随机重复。当患者有 2 个女孩时,unique(df) 会消除
-
有没有办法使用 rle() 来做到这一点?
-
@Pelilican 是对的:没有办法知道拥有三行
b,b,b的患者是 3 次重复还是只有一个孩子。您可能会在这里找到一些帮助:stackoverflow.com/q/35246453/5941593