Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过复制R中其他行的内容填充NA_R_Duplicates_Na - Fatal编程技术网

通过复制R中其他行的内容填充NA

通过复制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中的可用数据替换每个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 -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分。我该怎么办?非常感谢。问题解决了。谢谢你的阅读材料。我花了一些时间彻底检查它们。我真的很感谢你的支持。