以另一个变量的值为条件,用先前行中的非NA值替换数据框中变量的NA值

时间:2018-12-29 00:26:26

标签: r

我有以下数据框:

weird_data <- 
  data.frame("ID" = 1:8, 
             "API" = c("01-01", 
                       "01-02", 
                       "02-01", 
                       "02-02", 
                       "02-03", 
                       "03-01", 
                       "03-02", 
                       "03-03"),  
             "Final" = c("no", 
                         "yes", 
                         "no",
                         "no", 
                         "yes", 
                         "no", 
                         "no",
                         "yes"), 
             "Month" = c("May", 
                         NA, 
                         NA, 
                         "June", 
                         "July", 
                         "April", 
                         "June",
                         NA), 
             stringsAsFactors = FALSE
  )

API列中,连字符前面的第一个数字是井代码,而连字符后面的第二个数字是活动代码,其中较大的数字与以后的活动相对应。我只想保留与每个孔的最新活动代码相对应的行。但是,对于某些井,Month数据仅记录用于较早的孔隙度代码。因此,对于每口井,如果最后一个活动代码具有NA的{​​{1}},我想用最近的活动代码中的MonthNA替换为Month记录下来。理想情况下,我的输出应如下所示:

desired_output <- 
  data.frame("ID" = 1:8, 
             "API" = c("01-01", 
                       "01-02", 
                       "02-01", 
                       "02-02", 
                       "02-03", 
                       "03-01", 
                       "03-02", 
                       "03-03"),  
             "Final" = c("no", 
                         "yes", 
                         "no",
                         "no", 
                         "yes", 
                         "no", 
                         "no",
                         "yes"), 
             "Month" = c("May", 
                         "May", 
                         NA, 
                         "June", 
                         "July", 
                         "April", 
                         "June",
                         "June"), 
             stringsAsFactors = FALSE
  )

孔是按顺序排列的,并且Final列确实表明了我最终希望保留为yes的孔,如果有帮助的话。但是,实际数据大约有8,000行,涉及2800口井。

1 个答案:

答案 0 :(得分:1)

以下是使用var mediaSource = MediaSource.CreateFromStream(_stream.AsRandomAccessStream(), "video/avc"); _mediaPlayerElement.Source = mediaSource; 软件包的一种方法:

tidyverse