r - 如何计算数据框列的百分比变化,然后是下一个,等等?

标签 r

我有以下数据框,称它为“p”:

    Q1  Q2  Q3
X Product   4.986184956 5.083868356 5.109861156
Y Product   2.86990877  2.834816682 2.904347607
Z Product   6.58413545  6.238497279 6.40142101

我想计算 p 中每一列之间的百分比变化,并将每一列的输出放入一个名为“pchange”的新数据框中。

我试过使用 lag() 函数,但没有成功。 (我对这门语言还是很陌生。)

我非常感谢任何关于如何最好地解决这个问题的想法。谢谢你!

最佳答案

从我上面的评论中复制。使用 dplyr::transmute:

的简单解决方案
pchange <- df %>% 
  transmute(
    change_Q1_Q2 = ((Q2 - Q1)/Q1)*100,
    change_Q2_Q3 = ((Q3 - Q2)/Q2)*100
  )

给予

# A tibble: 3 x 2
  change_Q1_Q2 change_Q2_Q3
         <dbl>        <dbl>
1     1.959081     0.511280
2    -1.222760     2.452749
3    -5.249560     2.611586

如果您想保留 Product 列,您可以使用 mutate 而不是 transmute。我赞同 Jens Leerssen 对 R for Data Science 的认可。

(假设你的数据结构是这样的)

df <- tibble::tribble(
~Product, ~Q1,  ~Q2,  ~Q3,
"X Product", 4.986184956, 5.083868356, 5.109861156,
"Y Product",   2.86990877,  2.834816682, 2.904347607,
"Z Product",   6.58413545,  6.238497279, 6.40142101)

关于r - 如何计算数据框列的百分比变化,然后是下一个,等等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47066283/

相关文章:

将与另一个 data.frame 中的行名匹配的列中的值替换为关联值

r - 将函数应用于因子(参与者)的每个级别,以根据 R 中标准差中的均值距离去除异常值

r - R中所有CRAN中所有软件包的列表和描述

r - 插入 'facet_grid' ed 和 'grid.arrange' ed 图

r - 将数据帧的几列乘以一个因子(标量)

r - 使用 kableExtra 增加行/行间距

r - 匹配并提取r中的子字符串

r - 使用 R 中的现有计数创建维恩图?

html - 如何使用 html 从 Shiny 的 SelectInput 中包装输入?

R - 最近的 SpatialPolygonsDataFrame 从大西洋到太平洋 View 但保留数据