首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用两个因子变量的不同组合来子集原始数据框架

用两个因子变量的不同组合来子集原始数据框架
EN

Stack Overflow用户
提问于 2019-03-29 00:25:54
回答 1查看 23关注 0票数 0

我有一个包含11列和18350个观察值的数据集,其中有一个可变的公司和地区。有9家公司(company-0)分布在5个地区(region-0到region-5),并非所有公司都存在于所有地区。我想为公司和region.You的每个组合创建一个独立的数据框架,如下所示-公司0-区域1,公司0-区域10,公司0-区域7,公司1-区域5,公司2-区域0,公司3-区域2,公司4-区域3,公司5-区域7,公司6-区域6,公司8-区域9,公司9-区域8

因此,我在R.No中需要11个不同的数据帧,其他组合也是可能的,任何其他方法都将受到高度赞赏。提前感谢

我用split函数得到了一个列表-

代码语言:javascript
复制
p<-split(tsog1,list(tsog1$company),drop=TRUE)

现在我有了一个数据帧列表,并且我不能将该列表中的每个元素转换为单独的数据帧。

我也尝试过使用循环,但无法获得唯一命名的dataframe。

代码语言:javascript
复制
v<-c(1:9)
p<-levels(tsog1$company)
for (x in v)
{
  x.tsog1<-subset(tsog1,tsog1$company==p[x])
}

Dataset Image

EN

回答 1

Stack Overflow用户

发布于 2019-03-29 00:35:07

您可以为区域公司组合创建一列,并按该列拆分。

例如:

代码语言:javascript
复制
library(tidyverse)

# Create a df with 9 regions, 6 companies, and some dummy observations (3 per case)
df <- expand.grid(region = 0:8, company = 0:5, dummy = 1:3 ) %>% 
  mutate(x = round(rnorm((54*3)),2)) %>% 
  select(-dummy) %>% as_tibble()

# Create the column to split, and split.
df %>% 
  mutate(region_company = paste(region,company, sep = '_')) %>% 
  split(., .$region_company)

现在,一旦你有了数据帧列表,你要做什么,这取决于你的下一步。例如,如果你想保存它们,你可以执行walklapply

保存:

代码语言:javascript
复制
df_list <- df %>% 
  mutate(region_company = paste(region,company, sep = '_')) %>% 
  split(., .$region_company)

iwalk(df_list,function(df, nm){
  write_csv(df, paste0(nm,'.csv'))
})

或者,如果您只是想访问它:

代码语言:javascript
复制
> df_list$`0_4`
# A tibble: 3 x 4
  region company     x region_company
   <int>   <int> <dbl> <chr>         
1      0       4  0.54 0_4           
2      0       4  1.61 0_4           
3      0       4  0.16 0_4 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55402549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档