谢谢你的时间。我有以下数据(片段)。它从纵向数据,改造成一个宽幅文件的工作状态,每个柱子代表一个月,每一行都是一个人。如何用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