在保持每列类别的情况下向数据框中添加行

3
我希望您能够帮助我在数据框中添加一行以显示列总计。
test = data.frame('name' = c('a','b','c'),'x' = c(1,2,3),'y' = c(1,2,3))
class(test[,2])
[1] "numeric"

test = rbind(test,c('Total',apply(test[,-1],2,sum)))
   name x y
1     a 1 1
2     b 2 2
3     c 3 3
4 Total 6 6

class(test[,2])
[1] "character"

我希望数字列保持为数字类型。

我知道这是因为我要添加的混合向量实际上是一个字符向量。有什么好的解决方法吗?我尝试使用列表进行rbind,但在apply函数中它不起作用。

提前感谢。

2个回答

1
你需要将该行变成一个包含适当名称的三个元素列表。此外,您的第一列是一个因子向量,因此您需要处理它或者不将其作为因子。
test = data.frame('name' = c('a','b','c'),
 'x' = c(1,2,3),
 'y' = c(1,2,3),
 stringsAsFactors=FALSE)
 test = rbind(test,c(name='Total',as.list(apply(test[,-1],2,sum))))

0

您可以按照自己的方式操作,然后将那些列更改为数字列。

test[,2:3] <- sapply(test[,2:3], as.numeric)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接