我想在显示列总数的数据框中添加一行。
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函数。
提前致谢
答案 0 :(得分: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))))
答案 1 :(得分:0)
您可以按照自己的方式进行操作,然后将这些列更改回数字。
test[,2:3] <- sapply(test[,2:3], as.numeric)