如何使用for循环创建和填充列?

资料人

我有一个包含10个变量的简单时间序列数据集-我想创建一个for循环(或函数),为该时间序列中的每个变量创建一个“与上个月变量相比变化”和一个“与上个月变量相比变化百分比”(除日期外)。我知道我可以为每个特定的列简单地编写代码,但是由于有很多列,所以我想对其进行优化。

这是我的数据,“日期”,“销售”,“价格”是一些列名称:

+----+---+---+---+---+---+---+---+--
| Date       |   Sales   |  Price  | 
+----+---+---+---+---+---+---+---+--
| 01Aug2019  | 4         | 15      |
| 01Sept2019 | 6         | 30      |
| 01Oct2019  | 10        | 44      |
+----+---+---+---+---+---+---+---+--

这是我希望使用for循环(或任何函数)的样子

+----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| Date       |   Sales   |  chg_Sales  | pct_chg_Sales |   Price |  chg_Price  | pct_chg_Price| 
+----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 01Aug2019  | 4         | NA          |NA             |  15     | NA          |NA            |
| 01Sept2019 | 6         | 2           |50%            |  30     | 15          |100%          |
| 01Oct2019  | 10        | 4           |66%            |  44     | 14          |46%           |
+----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

我尝试了下面的代码,但是没有用

add_column <- function (x, y){
  setDT (x)[,pct_chg_y:= (y - shift (y,1, type="lag")/shift (,1, type="lag")*100]

}
阿克伦

下面是一个选项data.table,其中我们指定的兴趣的列.SDcols,通过减去创建“chg_”列.SD从(Data.table的子集)lag,即shift.SD,然后在第二步骤中,创建“pct_chg,通过将shift与“ chg_”列使用Map

nm1 <- c("Sales", "Price")
setDT(df1)[,  paste0("chg_", nm1)  :=  .SD - shift(.SD), .SDcols = nm1]
df1[, paste0("pct_chg_", nm1) :=   
      Map(function(x, y)  100 * (y/shift(x)), .SD, mget(paste0("chg_", nm1))),
               .SDcols = nm1]
df1
#         Date Sales Price chg_Sales chg_Price pct_chg_Sales pct_chg_Price
#1:  01Aug2019     4    15        NA        NA            NA            NA
#2: 01Sept2019     6    30         2        15      50.00000     100.00000
#3:  01Oct2019    10    44         4        14      66.66667      46.66667

数据

df1 <- structure(list(Date = c("01Aug2019", "01Sept2019", "01Oct2019"
), Sales = c(4, 6, 10), Price = c(15, 30, 44)), 
        class = "data.frame", row.names = c(NA, 
-3L))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用for循环创建和填充如下所示的结构?物镜

来自分类Dev

根据另一个数据帧中的值使用循环创建和填充多列

来自分类Dev

如何使用Java在HDFS中创建和填充Parquet文件?

来自分类Dev

如何使用 GeoTools API 创建和填充 shp 文件

来自分类Dev

如何使用数组在for循环中创建和保留变量?

来自分类Dev

尝试使用for循环创建和填充矢量时出现超出范围的错误(C ++)

来自分类Dev

尝试使用for循环创建和填充矢量时出现超出范围的错误(C ++)

来自分类Dev

使用for循环创建和分配不同的变量

来自分类Dev

使用docker-compose时如何创建和填充wso2数据库表?

来自分类Dev

如何使用动态构建的 lambda 表达式创建和填充动态对象

来自分类Dev

对于循环R,使用输出创建并填充新列

来自分类Dev

在R中的数据框中创建和填充列

来自分类Dev

如何使用python中的两个循环创建和追加多行

来自分类Dev

如何使用python中的两个循环创建和追加多行

来自分类Dev

如何从Mysql数据库创建和填充php数组

来自分类Dev

使用PHP动态创建和填充输入广播

来自分类Dev

使用javascript动态创建和填充数组

来自分类Dev

使用PHP动态创建和填充输入单选

来自分类Dev

使用旧条目创建和填充新词典

来自分类Dev

使用for循环在Tkinter中创建和使用小部件(缩放)

来自分类Dev

如何创建和使用vapi文件?

来自分类Dev

BIRT变量-如何创建和使用?

来自分类Dev

如何创建和使用OCaml模块?

来自分类Dev

如何使用pyWikiBot创建和/或编辑页面

来自分类Dev

如何创建和使用OCaml模块?

来自分类Dev

如何创建和使用查找表

来自分类Dev

如何使用滑块创建和销毁对象?

来自分类Dev

如何在python for循环中创建和删除类实例

来自分类Dev

使用for循环创建和命名多个并发线程

Related 相关文章

  1. 1

    如何使用for循环创建和填充如下所示的结构?物镜

  2. 2

    根据另一个数据帧中的值使用循环创建和填充多列

  3. 3

    如何使用Java在HDFS中创建和填充Parquet文件?

  4. 4

    如何使用 GeoTools API 创建和填充 shp 文件

  5. 5

    如何使用数组在for循环中创建和保留变量?

  6. 6

    尝试使用for循环创建和填充矢量时出现超出范围的错误(C ++)

  7. 7

    尝试使用for循环创建和填充矢量时出现超出范围的错误(C ++)

  8. 8

    使用for循环创建和分配不同的变量

  9. 9

    使用docker-compose时如何创建和填充wso2数据库表?

  10. 10

    如何使用动态构建的 lambda 表达式创建和填充动态对象

  11. 11

    对于循环R,使用输出创建并填充新列

  12. 12

    在R中的数据框中创建和填充列

  13. 13

    如何使用python中的两个循环创建和追加多行

  14. 14

    如何使用python中的两个循环创建和追加多行

  15. 15

    如何从Mysql数据库创建和填充php数组

  16. 16

    使用PHP动态创建和填充输入广播

  17. 17

    使用javascript动态创建和填充数组

  18. 18

    使用PHP动态创建和填充输入单选

  19. 19

    使用旧条目创建和填充新词典

  20. 20

    使用for循环在Tkinter中创建和使用小部件(缩放)

  21. 21

    如何创建和使用vapi文件?

  22. 22

    BIRT变量-如何创建和使用?

  23. 23

    如何创建和使用OCaml模块?

  24. 24

    如何使用pyWikiBot创建和/或编辑页面

  25. 25

    如何创建和使用OCaml模块?

  26. 26

    如何创建和使用查找表

  27. 27

    如何使用滑块创建和销毁对象?

  28. 28

    如何在python for循环中创建和删除类实例

  29. 29

    使用for循环创建和命名多个并发线程

热门标签

归档