【问题标题】:Fast way to and rows to dataframe based on number of column基于列数的快速方法和行到数据框
【发布时间】:2019-12-17 01:21:33
【问题描述】:

我有以下数据框:

df1 = structure(c(3, 5, 8, 6), .Dim = c(2L, 2L))

我想添加 3 行:

(0,0)
(5,0)
(0,8)

即对于每一列,我添加一行是该列的最大值,其余为零,以及一条全为零的行。有什么快速的方法吗?

【问题讨论】:

  • 你能做到吗rbind(df1, cbind(c(0, 5, 0), c(0, 0, 8)))
  • 当然可以,但是我需要一种通用的方式,因为它会适用于其他数据帧,并且具有更高的维度 (5)。
  • 是不是和你添加的值一样,然后创建一个函数
  • 结构显示matrix。你有矩阵还是data.frame
  • 一个数据框。我现在正在检查您的解决方案

标签: r dataframe dplyr


【解决方案1】:

一个选项是 colMaxs 来自 matrixStats,得到 diagrbind 与原始矩阵以及 0 填充行

library(matrixStats)
rbind(df1, 0, diag(colMaxs(df1)))

如果是data.frame(根据标题)

library(dplyr)    
df2 %>% 
   summarise_all(max) %>%
   diag %>% 
   rbind(df2, 0, .)

数据

df2 <- as.data.frame(df1)

【讨论】:

    猜你喜欢
    • 2020-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多