程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 Dataframe 自动创建基于子产品的值列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 Dataframe 自动创建基于子产品的值列表?

开发过程中遇到使用 Dataframe 自动创建基于子产品的值列表的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 Dataframe 自动创建基于子产品的值列表的解决方法建议,希望对你解决使用 Dataframe 自动创建基于子产品的值列表有所启发或帮助;
df <- data.frame("date"= 
1:4,"product"=c("B","B","A","A"),"subproduct"=c("1","2","x","y"),"actuals"=1:4)


#creates df1,df2,dfx,dfy
for(i in unique(df$subproduct)) {
  nam <- paste("df",i,sep = ".")
  assign(nam,df[df$subproduct==i,])

}

# CREATES List OF DATAFRAMES
# How do I make this so i don't have to manually type List(df.,df.,df.)

List_df <- List(df.1,df.2,df.x,df.y) %>%
  lapply( function(X) x[(names(X) %in% c("date","actuals"))])

# creates df1,df3,df4 only dates and actuals,removes the other column names
for (i in 1:length(List_df)) {
  assign(paste0("df",i),as.data.frame(List_df[[i]]))
}

对于第一个 for 循环,它基于唯一的子产品创建一个 df 对象。对于 List() 函数,我希望不必输入 df.1 ... df2 ... 等,所以如果我的数据中有 100 个唯一的子产品,我就不需要输入这个 df。 1、df.2、df.x、df.y、df.z、df.zzz、df。再三,一而再再而三。我将如何最好地做到这一点(1 个问题)

最后一个 for 循环创建单独的数据帧对象,只有日期和实际值将用于为每个对象创建时间序列。如何将这些对象的值放入单个数据帧或 dfs 列表中? (第二个问题

解决方法

我们可以使用 @H_872_3@mget 返回来自 ls 的对象名称子集上的对象值。 pattern 匹配以 'df'followed by a.` 和任何字母数字字符开头的对象名称

@H_872_3@mget(ls(pattern = '^df\\.[[:alnum:]]+$'))

如果 OP 想在不同的环境中创建这些对象

new_env <- new.env()
list2env(mget(ls(pattern = '^df\\.[[:alnum:]]+$')),envir = new_env)

如果我们想从头开始创建新对象,请在 'subproduct' 列上执行 group_split,相应地设置名称,然后创建多个对象(list2env - 然不推荐)

library(dplyr)
library(Stringr)
df %>% 
   group_split(subproduct) %>%
   setNames(str_c('df.',c(1,2,'x','y'))) %>% 
   list2env(.GlobalEnv)

大佬总结

以上是大佬教程为你收集整理的使用 Dataframe 自动创建基于子产品的值列表全部内容,希望文章能够帮你解决使用 Dataframe 自动创建基于子产品的值列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。