謝謝你的時間。我有以下數據(片段)。它從縱向數據,改造成一個寬幅文件的工作狀態,每個柱子代表一個月,每一行都是一個人。如何用DF中的if-else替換幾個NA中的值?
Code:
j1992_12 = c(1, 10, 1, 7, 1, 1)
j1993_01 = c(1, 1, 1, NA, 3, 1)
j1993_02 = c(1, 1, 1, NA, 3, 1)
j1993_03 = c(1, 8, 1, NA, 3, 1)
j1993_04 = c(1, 8, 1, NA, 3, 1)
j1993_05 = c(1, 8, 1, NA, 3, 1)
j1993_06 = c(1, 8, 1, NA, 3, 1)
j1993_07 = c(1, 8, 1, NA, 3, 1)
j1993_08 = c(1, 8, 1, NA, 3, 1)
j1993_09 = c(1, 8, 1, NA, 3, 1)
j1993_10 = c(1, 8, 1, NA, 3, 1)
j1993_11 = c(1, 8, 1, NA, 3, 1)
j1993_12 = c(1, 8, 1, NA, 3, 1)
j1994_01 = c(1, 8, 1, 7, 3, 1)
DF93= data.frame(j1992_12, j1993_01, j1993_02, j1993_03, j1993_04, j1993_05, j1993_06, j1993_07, j1993_08, j1993_09, j1993_10, j1993_11, j1993_12, j1994_01)
Output:
j1992_12 j1993_01 j1993_02 j1993_03 j1993_04 j1993_05 j1993_06 j1993_07 j1993_08 j1993_09 j1993_10 j1993_11 j1993_12 j1994_01
R1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
R2 10 1 1 8 8 8 8 8 8 8 8 8 8 8
R3 1 1 1 1 1 1 1 1 1 1 1 1 1 1
R4 7 NA NA NA NA NA NA NA NA NA NA NA NA 7
R5 1 3 3 3 3 3 3 3 3 3 3 3 3 3
R6 1 1 1 1 1 1 1 1 1 1 1 1 1 1
我的願望是檢查12個月出現的「NA」,如R4行。然後,我想檢查一年前的最後一次發生(j1992_12)是否與下一年的第一次發生((j1994_01))具有相同的值。如果是,我認爲工作狀態沒有變化,因此全部12幾個月應該得到的值,即前一年的最後一個月給出。如果不是,都應該留不變
方法至今:。
DF93_2 = DF93
DF93_2[,2:13] <- ifelse (is.na(DF93[,2:13]) && (DF93[,1]==DF93[,14]), DF93[,1] , DF93[,2:13])
現在我明白,如果我嘗試它只有一個像下面的代碼一樣的柱子,它取代了整個柱子。如何教R代替rowwise?
DF93_2[,2] <- ifelse (is.na(DF93[,2:13]) && (DF93[,1]==DF93[,14]), DF93[,1] , DF93[,2])
如果有人可以請給我一個暗示,我對R的理解有缺陷,我會非常感激。
編輯!只有原始文件是縱向的,這種格式現在是WIDE,我需要進行時間序列分析。它已經與所有年份(18年,從1992年開始到2010年)的調查數據進行了交叉檢查,所以我寧願不轉換成長格式,我正在尋找具有上述條件的可能性,我可以調整因爲條件不同。
經過進一步測試,我認爲問題在於連續搜索12個隨後的NA。我無法找到解決方案。如果您有任何想法,請分享。謝謝!
我無法使用R其中,我所以它只是一種猜測,但我不知道,你可以在'ifelse'子句中使用布爾向量。你不只是得到它的第一個價值嗎? (例如'if(c(T,F)&& c(T,T))'給出if(T)') – Vincent 2014-12-04 16:28:45
我不確定我理解。你是否想要做最後的觀察(http://en.wikipedia.org/wiki/Analysis_of_clinical_trials#Last_observation_carried_forward)?請參閱http://stackoverflow.com/questions/2776135/last-observation-carried-forward-in-a-data-frame – 2014-12-04 16:36:24
12個月是否需要連續並在同一日曆年,這是否需要爲所有年份?總的來說,這讓我感到更好地處理了一個長問題,其中包括年份列,月份列,個人列和價值列。很多好的工具可以處理這類數據。 – farnsy 2014-12-04 16:41:57