基于其他受访者构建变量';在dplyr中的二元答案
假设我有以下数据集:基于其他受访者构建变量';在dplyr中的二元答案,r,dplyr,R,Dplyr,假设我有以下数据集: dat <- read.table(text="Q_ID TeamID Answer Confidence Blur 1 A Yes 88 0 1 A Maybe 99 0 1 B No 20 1 1 B Yes 22 1 1 C Definitely 32 2 1 C Yes 55 1 1 D No 33 5 1 D Maybe 33 9", header=T) 但是,在我的实际数据集中,我有大约100个变量要创建“合作伙伴”版本,我可以将其与以下正则表达式匹配
dat <- read.table(text="Q_ID TeamID Answer Confidence Blur
1 A Yes 88 0
1 A Maybe 99 0
1 B No 20 1
1 B Yes 22 1
1 C Definitely 32 2
1 C Yes 55 1
1 D No 33 5
1 D Maybe 33 9", header=T)
但是,在我的实际数据集中,我有大约100个变量要创建“合作伙伴”版本,我可以将其与以下正则表达式匹配:
index <- grepl('Answer|Confidence|Blur', names(dat))
index这会反转每个二元数的答案、置信度和模糊值。请注意,反转是在不是分组变量的所有列上执行的,因此它应该缩放到任意数量的列。按“Q_ID”分组可能没有必要,但您的问题在这一点上有点不清楚
library(tidyverse)
library(magrittr)
dat.partner <- dat %>%
group_by(Q_ID, TeamID) %>%
mutate_all(rev) %>%
ungroup %>%
select(-Q_ID, -TeamID) %>%
set_colnames(paste0('partner_', colnames(.)))
dat.final <- cbind(dat, dat.partner)
Q_ID TeamID Answer Confidence Blur partner_TeamID partner_Answer partner_Confidence partner_Blur
1 1 A Yes 88 0 A Maybe 99 0
2 1 A Maybe 99 0 A Yes 88 0
3 1 B No 20 1 B Yes 22 1
4 1 B Yes 22 1 B No 20 1
5 1 C Definitely 32 2 C Yes 55 1
6 1 C Yes 55 1 C Definitely 32 2
7 1 D No 33 5 D Maybe 33 9
8 1 D Maybe 33 9 D No 33 5
库(tidyverse)
图书馆(magrittr)
dat.合伙人%
分组依据(Q\U ID,团队ID)%>%
全部变异(修订版)%>%
解组%>%
选择(-Q_ID,-TeamID)%>%
set_colnames(粘贴0('partner_',colnames())
通过团队ID自动加入的dat.final?这似乎有效!非常感谢。在这种情况下,rev
做什么?rev
反转向量中项目的顺序。因为我在dplyr的mutate\u all
函数中使用它,mutate
知道通过“TeamID”进行分组,所以在本例中rev
看到一组2元素向量。
library(tidyverse)
library(magrittr)
dat.partner <- dat %>%
group_by(Q_ID, TeamID) %>%
mutate_all(rev) %>%
ungroup %>%
select(-Q_ID, -TeamID) %>%
set_colnames(paste0('partner_', colnames(.)))
dat.final <- cbind(dat, dat.partner)
Q_ID TeamID Answer Confidence Blur partner_TeamID partner_Answer partner_Confidence partner_Blur
1 1 A Yes 88 0 A Maybe 99 0
2 1 A Maybe 99 0 A Yes 88 0
3 1 B No 20 1 B Yes 22 1
4 1 B Yes 22 1 B No 20 1
5 1 C Definitely 32 2 C Yes 55 1
6 1 C Yes 55 1 C Definitely 32 2
7 1 D No 33 5 D Maybe 33 9
8 1 D Maybe 33 9 D No 33 5