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

如何将r中的部分摘要输出保存到特定列中?

r
  •  1
  • Nathan123  · 技术社区  · 7 年前

    我有一个如下方式的数据帧

    name<-c('z','z','z','d','d','d')
    area<-c("A","A","B","B","B","C")
    df<-data.frame(area,name)
    (df.1<-data.frame(summary(df$area)))
    

    我得到以下输出

      summary.df.area.
    A                2
    B                3
    C                1
    

    你可以看到 A,B,C 值尚未分配给任何特定列,如何将这些值分配给名为 area ID

    所以看起来像

       area ID     summary.df.area.
        A                2
        B                3
        C                1
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   s__    7 年前

    df.1<-data.frame(summary(df$area))
    df.1$'area ID' <- rownames(df.1)
    
     df.1
      summary.df.area. area ID
    A                2       A
    B                3       B
    C                1       C
    

    df.1 <- data.frame(df.1$'area ID',df.1$ summary.df.area.)
    # add whatever column names you want
    colnames(df.1) <- c('ID','summary')
    
        2
  •  1
  •   markus    7 年前

    你能做到的

    (df.1<-data.frame(area_ID = names(summary(df$area)),
                      summary = summary(df$area)), stringsAsFactors = FALSE)
    #  area_ID summary
    #A       A       2
    #B       B       3
    #C       C       1
    

    另一个选择是 stack

    stack(summary(df$area))
    #  values ind
    #1      2   A
    #2      3   B
    #3      1   C
    

        3
  •  0
  •   Gwang-Jin Kim    7 年前

    一行解决方案

    cbind(data.frame("area ID"=rownames(df.1)), df.1)
    
    ##   area.ID summary.df.area.
    ## A       A                2
    ## B       B                3
    ## C       C                1
    

    并推广到一个函数:

    # function returning the data frame with rownames as first column
    # which has the title given in `firstColName`.
    rownamesAsColumn <- function(df, firstColName) {
      res <- cbind(data.frame(firstCol=rownames(df)), df)
      colnames(res) <- c(firstColName, colnames(df))
      res
    } 
    
    rownamesAsColumn(df.1, "area ID")
    
    ##   area.ID summary.df.area.
    ## A       A                2
    ## B       B                3
    ## C       C                1
    

    rownames(df.1) 通过 data.frame() 因此也用 data.frame(newname=rownames(df.1)) . 之后, cbind()