【发布时间】:2018-08-13 10:19:01
【问题描述】:
我真的需要你的帮助。我有一个看起来像这样的面板数据框
Name A B
1 Marco 01/09/2014 NA
2 Marco NA 01/01/2015
3 Marco 02/01/2015 NA
4 Luca 01/01/2015 NA
5 Luca NA 31/01/2015
6 Silvia NA 15/01/2015
并且我想创建一个取值为 1 的虚拟变量,如果(条件 1)在 A 列中,观察结果不显示 2014 年日期或(条件 2),如果在 B 列中,观察结果显示 2015 年日期和,与此同时,该个人至少有另一个观察结果,但没有一个与 A 列中的 2014 年日期相关联。换句话说,我不知道如何为检查所有与同一个人相关的其他观察结果(在“姓名”栏中标明)。我想要的结果是这样的
Name A B dummy
1 Marco 01/09/2014 NA 0
2 Marco NA 01/01/2015 0
3 Marco 02/01/2015 NA 1
4 Luca 01/01/2015 NA 1
5 Luca NA 31/01/2015 1
6 Silvia NA 15/01/2015 0
在上面的示例中,第一次观察时虚拟变量的值为 0,因为 A 列中的日期为 2014 年(条件 1 未验证)。在第二次观察中,虚拟变量取值为 0,因为尽管 B 列中有 2015 年的日期,同一个人(Marco)在与他相关的至少一个其他观察中在 A 列中显示了 2014 年的日期(在这种情况下观察 1)。相反,观察 4 显示虚拟变量等于 1,因为 A 列中的日期是 2015 年。观察结果 5 显示虚拟变量等于 1,因为尽管 B 列中的日期是 2015 年,同一个人 (Luca) 没有其他观察结果A 列中的 2014 年日期(观察 4 中的日期为 2015 年)。最后,与 Silvia 关联的虚拟变量必须为 0,因为尽管 B 列中的日期为 2015 年,但数据框中没有其他 Silvia 的观察结果。
我希望它不是太扭曲并且我表达了我的想法。如果不清楚,请告诉我。除了条件本身,如果您帮助我将条件施加到与同一个人相关的不同观察中,那已经很有帮助了。
谢谢大家! 马可
structure(list(Name = c("Marco", "Marco", "Marco", "Luca", "Luca", "Silvia"), A = structure(c(1409529600, NA, 1420156800, 1420070400, NA, NA), class = c("POSIXct", "POSIXt"), tzone = "UTC"), B = structure(c(NA, 1420070400, NA, NA, 1422662400, 1421280000), class = c("POSIXct", "POSIXt"), tzone = "UTC")), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))
【问题讨论】:
-
如果您
dput()您的示例 data.frame 会很有帮助,这样我们就可以从您拥有的相同数据类型开始。 -
我做到了!谢谢
-
我上传了这个简化版本的数据框,因为在完整的版本中,我应该在这里解释许多其他事情和变量,这使得问题变得更加复杂。但是,如果您设法帮助我解决我在这个非常简单的数据框中提出的问题,我就足以处理我拥有的庞大而完整的数据集
标签: r