代码之家  ›  专栏  ›  技术社区  ›  rnorouzian

如何将id列添加到数据帧

  •  1
  • rnorouzian  · 技术社区  · 3 年前

    我是 rbind k )的数据帧变成一个单一的数据框( current_output ).

    id 列到我的结果数据框这样我就可以 desred_output 在R基地?

    k = list(A = data.frame(d = 1, n = 2), B = data.frame(d = 1:2, n = 2:3))
    
    current_output = do.call(rbind, k)
    #    d n
    #A   1 2
    #B.1 1 2
    #B.2 2 3
    
    desired_ouput1 = data.frame(id = c(1,2,2), d = c(1,1:2), n = c(2,2:3))
    #  id d n
    #1  1 1 2
    #2  2 1 2
    #3  2 2 3
    
    desired_ouput2 = data.frame(id = c(A,B,B), d = c(1,1:2), n = c(2,2:3))
    #  id d n
    #1  A 1 2
    #2  B 1 2
    #3  B 2 3
    
    1 回复  |  直到 3 年前
        1
  •  3
  •   ThomasIsCoding    3 年前

    如果您想使用baser解决方案,下面的代码可能会对您有所帮助

    do.call(
      rbind,
      c(Map(cbind, id = names(k), k),
        make.row.names = FALSE
      )
    )
    

      id d n
    1  A 1 2
    2  B 1 2
    3  B 2 3
    

    或者你可以

    cbind(
      id = rep(
        names(k),
        sapply(k, nrow)
      ),
      do.call(rbind, k)
    )
    

    这给了

        id d n
    A    A 1 2
    B.1  B 1 2
    B.2  B 2 3