【问题标题】:Problem with Matrix/data-frame looping in RR中的矩阵/数据帧循环问题
【发布时间】:2019-12-14 21:25:24
【问题描述】:

我正在尝试获取多年的资产负债表数据,并确定每个数据点每年的百分比变化

问题是我不知道如何处理第一年的数据,因为它没有百分比变化。

数据结构如下

              2017       2018     2019  
NetIncome     123        156     197
COGS          34         32      36
ETC           23         35      32 

创建一个表格以显示不会尝试运行第一年数据的每年百分比变化的最佳方法是什么?

提前致谢!!

【问题讨论】:

    标签: r loops matrix


    【解决方案1】:

    我们可以通过取没有第一列、最后一列的数据子集的差异来取相邻年份之间的差异,并使用prop.table得到百分比

    cbind(`2017` = 0, prop.table(as.matrix(df1[-1] -df1[-length(df1)]), 1))
    

    如果我们需要分割

    cbind(`2017` = 0,(df1[-1] -df1[-length(df1)])/df1[-length(df1)])
    

    数据

    df1 <- structure(list(`2017` = c(123L, 34L, 23L), `2018` = c(156L, 32L, 
    35L), `2019` = c(197L, 36L, 32L)), class = "data.frame", row.names = c("NetIncome", 
    "COGS", "ETC"))
    

    【讨论】:

    • 很抱歉,如果没有第一年的数据,我不了解您如何获得第二年的百分比变化
    • @Tahum df1[-1] 删除第一列(在data.frame - 如果它是矩阵m1[, -1])和df1[-ncol(df1)]df1[-length(df1)] 删除最后一列,这使得数据集具有相同的尺寸。在df1[-length(df1)] 中,第一列是第一列,而在df1[-1] 中,它是第一列,所以本质上,我们正在做相邻列之间的减法
    • @Tahum 如果这不是您的预期,请使用预期的输出更新您的帖子。这会让你很容易理解你在做什么
    • 好的,我现在和你在一起,我唯一需要添加的是除法,因为(新号码 - 旧号码)/旧号码是我试图应用于每个数据点的内容。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    • 2013-02-02
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多