我有以下数据框,称它为“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/