我试图用R来做一些数据管理。在R中合并类似观察
我有一个数据框,作为多个变量(+200列)和许多观察(+10,000行)。有很多缺失的数据,以及重复或未完成的观察结果。 一个观察应该等于一个人(1行= 1独一无二的人)
这里是集例子(感谢对@aosmith):
dat = data.frame(email = c(rep(c("[email protected]", "[email protected]"), each = 2), NA),
name = c(NA, "Alfred C.", NA, "Bob V.", "Cathy L."),
var1 = c(2, 2, NA, NA, 1),
var2 = c(1, NA, 3, NA, 1),
var3 = c(NA, NA, 1, 0, 2),
var4 = c(0, NA, NA, NA, NA))
我要合并我的观察,这样到底,一行等于一个人。识别我使用电子邮件的人。当没有电子邮件时,我想保留所有观察结果(所以如果电子邮件丢失,我不希望R删除观察结果。每个观察,因为没有电子邮件被认为是一个独特的观察)。
对于我们可以找到相同电子邮件地址的时代,我们需要R来更新每个变量的字段,当我们发现后续观察(使用相同的电子邮件地址)时,我们得到的数据缺失数据。如果已经存在一个或多个变量的现有数据,我们希望R创建一个新的变量来存储不同的值。
下面是一个例子,使这更容易理解。
我们需要改变这样的:通过保持信息时
email name var1 var2 var3 var4 ... var200
[email protected] <NA> 2 1 NA 0 ... .
[email protected] Alfred C. 2 NA NA NA ... .
[email protected] <NA> NA 3 1 NA ... .
[email protected] Bob V. NA NA 0 NA ... .
<NA> Cathy L. 1 1 2 NA ... .
进入这个像这样(具有相同的电子邮件相结合的行和保持所有信息在一行中同一个人,但也我们无法确定该人的电子邮件地址相同的,所以,如果邮件是NA,我们必须保持它,如果它是一个独特的人):
email name var1 var2 var3a var3b var4 ... var200
[email protected] Alfred C. 2 1 NA NA 0 . .
[email protected] Bob V. NA 3 1 0 NA . .
<NA> Cathy L. 1 1 2 . NA . .
[email protected] . . etc etc etc etc etc etc
是否有一个简单的方法来做到这一点?我在dplyr和tidyr两天里苦苦挣扎...... 最后,一行应该包含我们能够使用电子邮件变量识别的一个人的信息。我们还需要保留所有其他我们无法识别属于一个人的观察结果。
谢谢你的帮助和时间!
你的意思是你有电子邮件,推特或两者兼而有之? NA中显示缺少的电子邮件值? – aosmith 2014-10-12 15:40:03
twitter只是另一个变量,我认为它很混乱,所以我会从示例中删除它。我们想要使用他们的电子邮件地址合并来自同一人的观察结果。 – leakciM 2014-10-12 16:23:58
我更新了我的答案,这可能有帮助,也可能没有帮助。如果您将可重现的示例数据集(您的示例数据集没有任何缺少的电子邮件值),它会有所帮助。 – aosmith 2014-10-12 17:41:56