按列中的唯一值拆分数据框并在全局环境中创建对象
Split dataframe by unique values in column and create objects in global environment
数据示例。
date1 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date2= seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date3 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date4 = seq(as.Date("2019/01/01"), by = "month", length.out = 10)
subproducts1=rep("1",29)
subproducts2=rep("2",29)
subproductsx=rep("x",29)
subproductsy=rep("y",10)
b1 <- c(rnorm(29,5))
b2 <- c(rnorm(29,5))
b3 <-c(rnorm(29,5))
b4 <- c(rnorm(10,5))
dfone <- data.frame("date"= c(date1,date2,date3,date4),
"subproduct"=
c(subproducts1,subproducts2,subproductsx,subproductsy),
"actuals"= c(b1,b2,b3,b4))
问题:如何根据独特的子产品在全局环境中将 dfone 拆分为 4 个数据帧?
我们可以使用group_split
从dplyr
到return一个list
的数据。frame/tibbles
library(dplyr)
dfone %>%
group_split(subproduct)
拆分成一个 list
并在 list
中进行转换可能会更好。但是,全局对象可以通过遍历 unique
'subproduct' 元素的序列来创建,然后 assign
新对象('subprod1'、'subprod2' ...)关于那个特定 'subproduct'
的 subset
数据
un1 <- unique(dfone$subproduct)
for(i in seq_along(un1))
assign(paste0('subprod', i), subset(dfone, subproduct == un1[i]))
数据示例。
date1 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date2= seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date3 = seq(as.Date("2019/01/01"), by = "month", length.out = 29)
date4 = seq(as.Date("2019/01/01"), by = "month", length.out = 10)
subproducts1=rep("1",29)
subproducts2=rep("2",29)
subproductsx=rep("x",29)
subproductsy=rep("y",10)
b1 <- c(rnorm(29,5))
b2 <- c(rnorm(29,5))
b3 <-c(rnorm(29,5))
b4 <- c(rnorm(10,5))
dfone <- data.frame("date"= c(date1,date2,date3,date4),
"subproduct"=
c(subproducts1,subproducts2,subproductsx,subproductsy),
"actuals"= c(b1,b2,b3,b4))
问题:如何根据独特的子产品在全局环境中将 dfone 拆分为 4 个数据帧?
我们可以使用group_split
从dplyr
到return一个list
的数据。frame/tibbles
library(dplyr)
dfone %>%
group_split(subproduct)
拆分成一个 list
并在 list
中进行转换可能会更好。但是,全局对象可以通过遍历 unique
'subproduct' 元素的序列来创建,然后 assign
新对象('subprod1'、'subprod2' ...)关于那个特定 'subproduct'
subset
数据
un1 <- unique(dfone$subproduct)
for(i in seq_along(un1))
assign(paste0('subprod', i), subset(dfone, subproduct == un1[i]))