【问题标题】:Intercalate NAs with data in new data frame用新数据框中的数据插入 NA
【发布时间】:2019-01-22 09:19:35
【问题描述】:

我有一个这样的df

           X1  X2  X3  X4
Number      4   4   4   4
Number.1    2   3   3   2

我想把它变成这样:

> X1
  NA
   4
   2
  NA
   4
   3
  NA
   4
   3
  NA
   4
   2
  NA

我怎样才能像示例中那样将NA 插入到我的df 中? 到目前为止,我尝试使用sapply(df, function(x) NA, t(Number(y))),但它检索到一个错误...我知道我必须使用t() 来转置我的df,但是如何在行之间添加NA

有什么建议吗?

注意:我对@9​​87654330@ 并不陌生,但最近我遇到了一些问题……我搜索了整个 StackOverflow,但找不到答案。

【问题讨论】:

    标签: r dataframe na


    【解决方案1】:

    这是通过stacking 数据框并使用ind 和我们的组指示器添加额外行的想法,即

    s_df <- stack(df)
    rbind(data.frame(values = NA, ind = NA), do.call(rbind, by(s_df, s_df$ind, rbind, NA)))[1]
    

    给出,

          values
    1         NA
    X1.1       4
    X1.2       2
    X1.3      NA
    X2.3       4
    X2.4       3
    X2.31     NA
    X3.5       4
    X3.6       3
    X3.3      NA
    X4.7       4
    X4.8       2
    X4.3      NA
    

    免责声明致谢this answer

    【讨论】:

      【解决方案2】:

      选择超出范围的行会创建NA 行,然后是unlist

      data.frame(X1 = c(NA, unlist(dat[1:3, ], use.names = FALSE)))
      #    X1
      # 1  NA
      # 2   4
      # 3   2
      # 4  NA
      # 5   4
      # 6   3
      # 7  NA
      # 8   4
      # 9   3
      # 10 NA
      # 11  4
      # 12  2
      # 13 NA
      

      【讨论】:

        【解决方案3】:

        您可以使用rbind(NA, dat)unlistuse.name = FALSE - 感谢@zx8754。

        data.frame(X1 = c(unlist(rbind(NA, dat), use.name = FALSE), NA))
        

        结果

        #   X1
        #1  NA
        #2   4
        #3   2
        #4  NA
        #5   4
        #6   3
        #7  NA
        #8   4
        #9   3
        #10 NA
        #11  4
        #12  2
        #13 NA
        

        c(..., NA) 在向量末尾追加NA

        数据

        dat <- structure(list(X1 = c(4L, 2L), X2 = c(4L, 3L), X3 = c(4L, 3L), 
            X4 = c(4L, 2L)), .Names = c("X1", "X2", "X3", "X4"), class = "data.frame", row.names = c("Number", 
        "Number.1"))
        

        【讨论】:

        • unlist(..., use.name = FALSE) 而不是unname()
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多