我想从因子水平与固定水平的组合中生成一个数据帧以进行共享。我有一个如下所示的工作代码,但我想对其进行概括,以便只需输入以下内容即可将其用于任意数量的级别:数据帧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
答案 0 :(得分:2)
这是您需要的吗?
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
答案 1 :(得分:1)
这是另一种方式。我们将"A"
组进行不同的划分,并根据group_split
对var1
进行划分,现在通过将strat
的{{1}}值粘贴到first
。
var1