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

时间:2018-10-17 20:41:09

标签: r

我以以下方式拥有数据框

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 个答案:

答案 0 :(得分:1)

你可以

(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

但是您显然需要重命名列。

答案 1 :(得分:1)

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 :(得分:0)

单线解决方案

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()取代了列名。