r - 如何从级别的成对组合生成数据框
问题描述
我想从要共享的固定级别的因子级别组合中生成一个数据框。我有一个如下所示的工作代码,但我想概括它,以便它可以通过简单地输入以下内容来处理任意数量的级别:数据框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
解决方案
这是你需要的吗?
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
推荐阅读
- reactjs - 第 31:7 行:React Hook useEffect 缺少依赖项:'url'。包括它还是删除依赖数组?
- c++ - 为什么我的伺服电机在尝试前进时不会停止旋转?
- java - 在实体到多 JPA 之间创建关联
- javascript - React - 如何在我的表单内返回 Axios 捕获错误?
- python-3.x - 在类中查找选项卡错误的原因
- amazon-s3 - S3 识别在未启用版本控制的情况下被覆盖的文件
- php - MYSQL/PHP 新手,需要帮助将 MYSQL 数组输出渲染到 PHP 编号列表
- javascript - 我可以记住 React 创建元素调用吗?
- google-apps-script - 谷歌表格:是否可以保护一系列单元格,使其只能使用脚本进行修改?
- c++ - 如何使用重载运算符>>读取文件?