通过复制R中其他行的内容填充NA
我有一个类似下表的数据集。我想做的是用各个ID中的可用数据替换每个ID的NA,除了我要预测的结果变量。例如,对于ID 1,我需要从1990年到1991年、1992年、1993年的信息副本。对于ID 2,我应该复制1992年至1990年、1991年和1993年的信息。ID代表一个集群,比如说村庄。最后,我想预测未来几年的结果。我想在R做这个通过复制R中其他行的内容填充NA,r,duplicates,na,R,Duplicates,Na,我有一个类似下表的数据集。我想做的是用各个ID中的可用数据替换每个ID的NA,除了我要预测的结果变量。例如,对于ID 1,我需要从1990年到1991年、1992年、1993年的信息副本。对于ID 2,我应该复制1992年至1990年、1991年和1993年的信息。ID代表一个集群,比如说村庄。最后,我想预测未来几年的结果。我想在R做这个 ID YeStart Author YEAR Lat Long Outome 1 1990 Goroo 2012 23.45
ID YeStart Author YEAR Lat Long Outome
1 1990 Goroo 2012 23.45 -16.718 20
1 1991 <NA> NA NA NA 30
1 1992 <NA> NA NA NA NA
1 1993 <NA> NA NA NA NA
2 1990 <NA> NA NA NA 2
2 1991 <NA> NA NA NA NA
2 1992 Berthe 2012 20.45 -16.718 NA
2 1993 <NA> NA NA NA NA
3 1990 <NA> NA NA NA NA
3 1991 Berthe 2012 40.45 -16.718 NA
3 1992 <NA> NA NA NA NA
3 1993 <NA> NA NA NA 50
ID是起始作者年份Lat Long Outome
1 1990戈鲁2012 23.45-16.718 20
1 1991年不适用30
1 1992年不,不,不
1 1993年不知道不知道
2 1990年不适用2
1991年2月
2 1992年伯斯2012年20.45-16.718北美
2 1993年不知道不知道
3 1990年不,不,不
1991年3月伯斯2012年40.45-16.718北美
3 1992年不,不,不
3 1993年NA 50
我很确定,这个问题的答案已经在网站上的某个地方找到了。但是您可以使用函数merge
和complete.cases
来完成
d <- read.table(text="ID YeStart Author YEAR Lat Long Outome
1 1990 Goroo 2012 23.45 -16.718 20
1 1991 <NA> NA NA NA 30
1 1992 Goroo 2012 23.45 -16.718 NA
1 1993 <NA> NA NA NA NA
2 1990 <NA> NA NA NA 2
2 1991 <NA> NA NA NA NA
2 1992 Berthe 2012 20.45 -16.718 NA
2 1993 <NA> NA NA NA NA
3 1990 <NA> NA NA NA NA
3 1991 Berthe 2012 40.45 -16.718 NA
3 1992 <NA> NA NA NA NA
3 1993 <NA> NA NA NA 50", header=TRUE)
d1 <- d[c('ID', 'YeStart', 'Outome')]
d2 <- d[! names(d) %in% c('Outome', 'YeStart')]
merge(d1, unique(d2[complete.cases(d2), ]))
# ID YeStart Outome Author YEAR Lat Long
# 1 1 1990 20 Goroo 2012 23.45 -16.718
# 2 1 1991 30 Goroo 2012 23.45 -16.718
# 3 1 1992 NA Goroo 2012 23.45 -16.718
# 4 1 1993 NA Goroo 2012 23.45 -16.718
# 5 2 1990 2 Berthe 2012 20.45 -16.718
# 6 2 1991 NA Berthe 2012 20.45 -16.718
# 7 2 1992 NA Berthe 2012 20.45 -16.718
# 8 2 1993 NA Berthe 2012 20.45 -16.718
# 9 3 1990 NA Berthe 2012 40.45 -16.718
# 10 3 1991 NA Berthe 2012 40.45 -16.718
# 11 3 1992 NA Berthe 2012 40.45 -16.718
# 12 3 1993 50 Berthe 2012 40.45 -16.718
d嘿@jonestats,你还没有接受你之前问题的答案。花点时间想想。您只需单击您要接受的答案旁边的复选标记。让我检查一下,然后立即执行。昨天我勾选了“是”,表示它很有用,我再也找不到那个选项了。非常感谢,它运行得非常完美。在哪里可以学到这些东西。你知道有什么参考资料对我有用吗?那里有很多教程。哈德利·威克姆的R词汇表()是一个很好的起点。在那之后,我建议读帕特里克·伯恩斯的书《地狱》。它是免费的,只需谷歌就可以了。嗨,我意识到,如果一个集群在2年内拥有数据,那么它会被复制两次。例如,如果集群1有1990年和1992年的数据,那么当我填写案例时,我将有8个集群1数据点,而不是正常的4个,因此我有2个1990年、2个1991年、2个1992年和2个1993年。如果是3年,则得12分。我该怎么办?非常感谢。问题解决了。谢谢你的阅读材料。我花了一些时间彻底检查它们。我真的很感谢你的支持。