【问题标题】:Adding row to data frame while maintaining the class of each column在保持每列的类的同时向数据框添加行
【发布时间】:2014-02-20 08:13:12
【问题描述】:

我想在显示列总数的数据框中添加一行。

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 函数。

提前致谢

【问题讨论】:

    标签: r dataframe


    【解决方案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))))
    

    【讨论】:

      【解决方案2】:

      您可以按照自己的方式进行操作,然后将这些列改回数字。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 1970-01-01
        • 2021-06-06
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        相关资源
        最近更新 更多