大佬教程收集整理的这篇文章主要介绍了使用 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,请注明来意。