【发布时间】:2018-10-21 18:10:43
【问题描述】:
在四处寻找答案后第一次发帖。我的问题与展平重复项和按日期顺序保持数据有关。
在这个项目中,参与者来进行后续评估,并在 20 周内记录他们的体重。由于参与者在不同的日期到达进行评估,我们有 20 列考勤编号,其中包含该考勤日期,然后是 20 列他们在该特定考勤时的体重。不知何故,参与者被重复了,他们的措施脱节了。
编辑:我忘了说每个参与者都有一个唯一的 ID,所以在下面的例子中,p01 是一个参与者,但输入错误意味着他们出现了两次。
此外,我的意思是“扁平化”,有没有一种方法可以合并这些重复的条目,这样每个参与者只有一个观察/行。导致一些悲伤的是弄清楚如何排序每周数据,然后还要保留他们记录的体重值
一个更简单的虚构示例如下所示:
**What actually happened**
id attendance_1 attendance_2 attendance_3 attendance 4 attendance 5
p01 2018-05-01 2018-05-08 2018-05-15 NA 2018-05-28
Weight_1 Weight_2 Weight_3 Weight_4 Weight_5
179 176 178 NA 173
**What is recorded in dataset**
df
------
id attendance_1 attendance_2 attendance_3 attendance 4 attendance 5
1 p01 2018-05-01 2018-05-08 2018-05-15 NA NA
2 p01 2018-05-28 NA NA NA NA
Weight_1 Weight_2 Weight_3 Weight_4 Weight_5
1 179 176 178 NA NA
2 173 NA NA NA NA
因此参与者“p01”参加了 5 次评估中的 4 次,但他们的记录已重复,并且他们的“第五次”参加在他们的重复条目中显示为他们的“第一次”。有没有办法“压平”他们的记录以正确排列出勤日期和体重记录?
在此示例中,我正在考虑使用 lubridate 包根据从开始日期起的 5 周创建一个“结束日期”列,但我不知道如何在其“正确”空间中编写移动值,或者如果这是可能的。
我之前在其他分析中使用过此代码;
df_merged = aggregate(x = df, by = list(df$participants_ID), FUN = function(x) na.omit(x)[1])[,-1]
根据他们的 ID 展平重复的参与者,但在这种情况下这会覆盖数据并且不起作用。
提前谢谢你!
【问题讨论】:
-
你怎么知道第二行的出勤_1实际上对应的是第一行的出勤_5而不是出勤_4?据我所知,您的数据中没有任何内容表明这一点。
-
你能生成数据吗?也许像 20 行这样的代码将有助于创建一些代码而不是几个观察。
-
欢迎来到stackoverflow。你很好地组织了你的问题。我认为到目前为止没有人回答你的原因有两个。首先,“扁平化”是什么意思?充其量给出一个你所拥有的虚构例子,并准确地展示你想要的结果(参见stackoverflow.com/questions/50291474/…)。其次,如果您向他们提供如何创建虚构数据的代码,人们往往会更频繁地回答您的问题。
-
大家好,谢谢你们的cmets。自从发帖以来我一直不太好,所以今天才回到办公室,但感谢所有 cmets 的建议。 @SimonLarsen:因此,评估中的每个参与者都被赋予了一个唯一的标识符(它也只是在这个试点中发生,我们有少数参与者来跟踪 ID),并且在数据输入期间它们以某种方式出现在两行
标签: r sorting date duplicates