2012-11-28 93 views
0

複製其它行的內容我具有類似於下面的表中的數據集。我想要做的就是將每個ID的NA替換爲相應ID中的可用數據,以分開對於我想要預測的結果變量。例如,對於ID 1,我想從1990年的信息複製到1991年,1992年,1993年爲2號,我應該從1992年的信息複製到1990年,1991年和1993年的ID代表集羣,說村。最終我想預測失蹤年份的結果。我想在R做這件事。灌裝NA由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 
+1

嘿@jonestats,你還沒有接受你以前的問題的答案。花點時間,弄清楚。您只需點擊您想接受的答案旁邊的複選標記即可。 –

+0

讓我檢查一下,現在就做。我昨天選擇了是的,表示它很有用,我不能再次找到該選項。 – jonestats

回答

1

我很確定這個問題的答案已經在網站的某個地方了。但是你可以用功能mergecomplete.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 
+0

非常感謝,它完美地運作。在哪裏可以學習一些這些東西。你知道任何對我有用的參考嗎? – jonestats

+0

這裏有很多教程。 Hadley Wickham的R詞彙表(https://github.com/hadley/devtools/wiki/vocabulary)是一個很好的起點。之後,我推薦閱讀Patrick Burns的書「R Inferno」。它是免費的,只是谷歌它。 –

+0

你好,我意識到如果一個集羣有超過2年的數據,那麼它會被複制兩次。例如,如果集羣1具有在1990年和1992年的數據,然後當我在箱子填補我將有8簇1個數據點,而不是正常4,使我有2 1990,2 1991年,1992年2和2 1993年如果其3年,然後給12分。我怎樣才能解決這個問題? – jonestats