【问题标题】:How to move NA to the top of the column of an R data.frame? [duplicate]如何将 NA 移动到 R data.frame 列的顶部? [复制]
【发布时间】:2020-07-07 00:40:17
【问题描述】:

如何将所有NA 移动到DF data.frame 的F 列的顶部。我不想将其对应的Dates 移动,只是将NA 移动到Fcolumn 的顶部。

set.seed(1500)
DF <- data.frame(Date = seq(as.Date("2001-01-01"), to= as.Date("2003-12-31"), by="day"),
                      A = runif(1095, 0,10),
                      D = runif(1095,5,15),
                      F = c(runif(1000,3,5), rep(NA, 95)))

【问题讨论】:

    标签: r dataframe na


    【解决方案1】:

    您可以使用orderis.naNA 带到顶部。

    DF$F <- DF$F[order(!is.na(DF$F))]
    

    或者您只使用is.na 一个原样,一个作为否定。

    i <- is.na(DF$F)
    DF$F <- c(DF$F[i], DF$F[!i])
    

    【讨论】:

      【解决方案2】:

      也许,是这样的?

      DF$F <- c(rep(NA, sum(is.na(DF$F))), na.omit(DF$F))
      

      首先添加所有NA,然后附加所有非NA值。

      【讨论】:

        【解决方案3】:

        假设所有的 NA 都在末尾,我们可以shift

        x <- c(1:5, c(NA, NA))
        x
        # [1]  1  2  3  4  5 NA NA
        
        data.table::shift(x, sum(is.na(x)))
        # [1] NA NA  1  2  3  4  5
        

        或者由于列F与其他列无关,倒过来即可:

        rev(x)
        # [1] NA NA  5  4  3  2  1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-25
          • 1970-01-01
          • 2012-06-01
          • 1970-01-01
          相关资源
          最近更新 更多