首页 > 解决方案 > 如何从级别的成对组合生成数据框

问题描述

我想从要共享的固定级别的因子级别组合中生成一个数据框。我有一个如下所示的工作代码,但我想概括它,以便它可以通过简单地输入以下内容来处理任意数量的级别:数据框df、要拆分的变量、var1要共享的级别A和名称的新变量strat。我希望能够将此功能与管道一起使用,以便之后进行其他操作。任何帮助将非常感激。

这是我的尝试:

var1 <- c("A", "B", "C", "A", "B", "C", "A", "B", "C", "B")
var2 <- seq(2000, 2009, 1)
var3 <- sample(1:10, 10, replace=T)
var4 <- sample(1:10, 10, replace=T)
df <- data.frame(var1, var2, var3, var4)


df2<-df %>% group_split(var1)   

dfB<-rbind(df2[[1]], df2[[2]]) %>% transform(.,
strat = "BA")

dfC<-rbind(df2[[1]], df2[[3]]) %>% transform(.,
strat = "CA")

df3<-rbind(dfB, dfC)

df3
   var1 var2 var3 var4 strat
1     A 2000    8    5    BA
2     A 2003    5    7    BA
3     A 2006    1    6    BA
4     B 2001    3    6    BA
5     B 2004    6    9    BA
6     B 2007    8   10    BA
7     B 2009    5    5    BA
8     A 2000    8    5    CA
9     A 2003    5    7    CA
10    A 2006    1    6    CA
11    C 2002    9    5    CA
12    C 2005    3    5    CA
13    C 2008    5    1    CA

标签: rdata.tabletidyversepurrrfurrr

解决方案


这是你需要的吗?

library(dplyr)
lapply(df2[-1], function(x) rbind(df2[[1]], x)) %>% 
  lapply(function(x)  mutate(x,
    start = unique(var1) %>% 
      sort(decreasing = TRUE) %>% 
      paste(collapse = "")
  )) %>% 
  do.call(rbind, .) 


# A tibble: 13 x 5
   var1   var2  var3  var4 start
   <fct> <dbl> <int> <int> <chr>
 1 A      2000     2     6 BA   
 2 A      2003     7     7 BA   
 3 A      2006     3     4 BA   
 4 B      2001     2     3 BA   
 5 B      2004     1     1 BA   
 6 B      2007     8    10 BA   
 7 B      2009    10     4 BA   
 8 A      2000     2     6 CA   
 9 A      2003     7     7 CA   
10 A      2006     3     4 CA   
11 C      2002     8     2 CA   
12 C      2005     2     1 CA   
13 C      2008     8     8 CA  

推荐阅读