R-For循环针对数据框列表运行代码

失落的SQL

我有这段代码,可以针对一个数据帧运行。但是,我希望能够在数据帧列表上循环它。

这是基本代码:

# Run RFM Analysis on df_0
df_1 <- rfm_table_order(df_0, customer = customer_id, order_date = txn_date, revenue = txn_price, analysis_date = analysis_date, 
                             recency_bins=3, frequency_bins=3, monetary_bins=3)

df_2 <- as.data.frame(df_1$rfm)

# Add weighting to the scores    
df_2$finalscore <- (df_2 $recency_score*3 + df_2 $frequency_score*2 + df_2 $monetary_score*3)/8

# Add labels according to weighted score
df_2<- df_2 %>%
mutate(segment = case_when(
  .$finalscore >= 2.5 ~ "Loyal",
  .$finalscore <= 1.5 ~ "Lapsed",
  TRUE ~ "Regular"
))

# Add the analysis date
df_2$analysis_date <- rep(analysis_date,nrow(df_2))

# Output the final dataset with required rows
df_final <- df_2[,c("customer_id","segment","analysis_date")]

df_0看起来像这样:

customer_id    txn_date    txn_price   category   
123            01/01/2019  12          a
456            01/02/2019  7           b
...

运行以上代码后,df_final如下所示:

customer_id    segment     analysis_date
123            Loyals      01/05/2019
456            Loyals      01/05/2019
...

我想看看如果使用类别作为因素,结果将有何不同因此,我制作了一个数据框列表。

cat_list <- split(df_0, as.factor(df_0$category))

我需要添加一个针对数据框列表运行的循环。循环的最后一步还应将数据帧的名称附加到结果中。

所需的输出:

customer_id    segment   category    analysis_date
123            Loyals    a           01/05/2019
456            Loyals    b           01/05/2019
...
完善

简单地概括一下将数据帧作为输入并运行by(大致相当于split+ lapply)的过程,即可按类别对主要数据帧进行子集化,并将子集传递给函数。还考虑withinifelse用于添加需要的列(基R或的tinyverse版本mutatecase_when

功能

my_func <- function(sub_df) {

    # Run RFM Analysis on df
    df_1 <- rfm_table_order(sub_df, customer = customer_id, order_date = txn_date,     
                            revenue = txn_price, analysis_date = analysis_date, 
                            recency_bins=3, frequency_bins=3, monetary_bins=3)

    df_2 <- within(as.data.frame(df_1$rfm), {
                # Add weighting to the scores  
               finalscore <- (recency_score*3 + frequency_score*2 + monetary_score*3)/8

               # Add labels according to weighted score
               segment <- ifelse(finalscore >= 2.5, "Loyal", 
                                 ifelse(finalscore <= 1.5, "Lapsed", "Regular")
                          )

               # Add the analysis date
               analysis_date <- analysis_date

               # Add category
               category <- sub_df$category[[1]]
          })

    # Output the final dataset with required rows
    df_final <- df_2[,c("customer_id", "segment", "category", "analysis_date")]

    return(df_final)
}

呼叫

cat_list <- by(df_0, df_0$category, my_func)

# cat_list <- lapply(split(df_0, df_0$category), my_func)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试对数据框中的字段运行ANOVA [R]

来自分类Dev

在R中的列表中对数据框进行排序

来自分类Dev

R循环anova并从列表中选择数据框名称

来自分类Dev

将列表更改为没有循环 R 的数据框

来自分类Dev

R:如何仅对数据框中的子集行申请循环

来自分类Dev

R:合并多对数据框

来自分类Dev

R:对数据框的特定用户输入

来自分类Dev

使用R中包含列表的列对数据框进行汇总

来自分类Dev

按 R 中的最小列值对数据框列表进行排序

来自分类Dev

想要通过在循环中对数据框进行子集化并根据 i 值分配每个数据框名称来在 R 中创建新数据框

来自分类Dev

R列表到数据框

来自分类Dev

在 R 中,如何根据函数内部的值列表正确地对数据框进行子集化?

来自分类Dev

处理大型数据框时如何在R中更快地运行循环

来自分类Dev

如何针对大型数据在R中优化for循环

来自分类Dev

在R中对数据框进行自定义排序

来自分类Dev

R使用变量对数据框进行排序/排序

来自分类Dev

按R中的ALL列对数据框进行排序

来自分类Dev

R:按名称范围对数据框列进行索引

来自分类Dev

在R中逐行对数据框的列进行重新排序

来自分类Dev

在R中逐行对数据框的列进行重新排序

来自分类Dev

在R中对数据框进行双重排序

来自分类Dev

按R中的ALL列对数据框进行排序

来自分类Dev

如何按R中的列名对数据框进行排序?

来自分类Dev

R:对数据框中的行进行重新排序

来自分类Dev

在R中对数据集执行多重相关的循环

来自分类Dev

将我的for循环另存为R中的数据框或列表

来自分类Dev

R-如何使用循环根据匹配名称列表复制和更改数据框

来自分类Dev

R使用for循环将列添加到数据框列表

来自分类Dev

R-从名称列表中循环遍历多个数据框

Related 相关文章

  1. 1

    尝试对数据框中的字段运行ANOVA [R]

  2. 2

    在R中的列表中对数据框进行排序

  3. 3

    R循环anova并从列表中选择数据框名称

  4. 4

    将列表更改为没有循环 R 的数据框

  5. 5

    R:如何仅对数据框中的子集行申请循环

  6. 6

    R:合并多对数据框

  7. 7

    R:对数据框的特定用户输入

  8. 8

    使用R中包含列表的列对数据框进行汇总

  9. 9

    按 R 中的最小列值对数据框列表进行排序

  10. 10

    想要通过在循环中对数据框进行子集化并根据 i 值分配每个数据框名称来在 R 中创建新数据框

  11. 11

    R列表到数据框

  12. 12

    在 R 中,如何根据函数内部的值列表正确地对数据框进行子集化?

  13. 13

    处理大型数据框时如何在R中更快地运行循环

  14. 14

    如何针对大型数据在R中优化for循环

  15. 15

    在R中对数据框进行自定义排序

  16. 16

    R使用变量对数据框进行排序/排序

  17. 17

    按R中的ALL列对数据框进行排序

  18. 18

    R:按名称范围对数据框列进行索引

  19. 19

    在R中逐行对数据框的列进行重新排序

  20. 20

    在R中逐行对数据框的列进行重新排序

  21. 21

    在R中对数据框进行双重排序

  22. 22

    按R中的ALL列对数据框进行排序

  23. 23

    如何按R中的列名对数据框进行排序?

  24. 24

    R:对数据框中的行进行重新排序

  25. 25

    在R中对数据集执行多重相关的循环

  26. 26

    将我的for循环另存为R中的数据框或列表

  27. 27

    R-如何使用循环根据匹配名称列表复制和更改数据框

  28. 28

    R使用for循环将列添加到数据框列表

  29. 29

    R-从名称列表中循环遍历多个数据框

热门标签

归档