我以以下方式拥有数据框
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
答案 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()
取代了列名。