R根据参考数据集创建虚拟数据集
R Create dummy datasets based on reference dataset
上下文
我想为一个项目构建两个虚拟调查数据框。一个数据框对 Relationship
调查有回应,另一个数据框对 Pulse
调查有回应。
这是每一个的样子 -
关系数据框
#Relationship Data
rel_data= data.frame(
TYPE=rep('Relationship',446),
SURVEY_ID = rep('SURVEY 2018 Z662700',446),
SITE_ID=rep('Z662700',446),
START_DATE= rep(as.Date('2018-07-01'),446),
END_DATE= rep(as.Date('2018-07-04'),446)
)
脉冲数据帧
#Pulse Data
pulse_data= data.frame(
TYPE=rep('Pulse',525),
SURVEY_ID = rep('SURVEY 2018 W554800',525),
SITE_ID=rep('W554800',525),
START_DATE= rep(as.Date('2018-04-01'),525),
END_DATE= rep(as.Date('2018-04-04'),525)
)
我的Objective
我想根据参考table中的条件,向这两个数据帧中的每一个添加列 .
参考文献 table 包含要添加到两个调查数据框中的每个问题,以及每个问题的详细信息。这是它的样子
参考Table
#Reference Table - Question Bank
qbank= data.frame(QUEST_ID=c('QR1','QR2','QR3','QR4','QR5','QP1','QP2','QP3','QP4','QP5','QP6'),
QUEST_TYPE=c('Relationship','Relationship','Relationship','Relationship','Relationship',
'Pulse','Pulse','Pulse','Pulse','Pulse','Pulse'),
SCALE=c('Preference','Satisfaction','Satisfaction','Satisfaction','Preference','NPS',
'Satisfaction','Satisfaction','Satisfaction','Preference','Open-Ended'),
FOLLOWUP=c('No','No','No','No','No','No','Yes','No','Yes','No','No'))
台阶
对于每个调查数据框(Relationship & Pulse),我想执行以下操作 -
1) 在参考 table 中查找它们各自的问题代码,并仅将这些问题添加到数据框中。例如,Relationship
数据框将只有与参考 table 中的 TYPE = 'Relationship'
有关的问题代码。 Pulse
数据帧也是如此。
2) 对每个问题的回答将有条件地添加到每个数据框中。这是条件-
- 如果参考 table 中的
SCALE = 'Preference'
,则响应将是 150,100,50,0 or -50
。此外,这些数字将以 任意随机顺序生成。
- 如果参考 table 中的
SCALE = 'NPS'
,则响应范围为 0 to 10
。将生成数字,使得 Net Promoter Score (NPS) 等于 50%。 提醒:NPS = 9s 和 10s 的百分比减去 0s 到 6s 的百分比。
- 如果参考 table 中的
SCALE = 'Satisfaction'
,则响应范围为 1 (Extremely Dissatisfied) to 5 (Extremely Satisfied)
。将生成数字,使得 1 和 2 的 百分比等于 90%。
- 如果参考 table 中的
SCALE = 'Open-Ended'
,则 确保该列为空(即不包含任何回复)。
我的尝试
使用 previously asked question for the conditional response creation and this 从引用 table 添加列,我试图解决这个问题。但是我还没有得到我想要的东西。
如有任何意见,我们将不胜感激
期望输出
我想要的输出 tables 看起来像这样 -
关系数据帧输出
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QR1 QR2 QR3 QR4 QR5
1 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 5 1 2 2
2 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 1 2 2 2
3 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 4 5 2 2
4 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 1 1 2 2
and so on
和脉冲数据帧输出
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QP1 QP2 QP3 QP4 QP5 QP6
1 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 7 1 3 3 100
2 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 8 5 3 1 100
3 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 3 1 4 3 100
4 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 1 2 4 3 100
and so on
会像
rel_data %>%
left_join(qbank, by = c("TYPE" = "QUEST_TYPE")) %>%
select(-FOLLOWUP) %>%
unique() %>%
mutate(val = case_when(SCALE == "Preference" ~ "A",
SCALE == "Satisfaction" ~ "B",
SCALE == "NPS" ~ "C",
TRUE ~ NA_character_ )) %>%
select(-SCALE) %>%
spread(key = QUEST_ID, value = val)
为你工作?
您可以修改 case_when
条件以满足您的需要。
上下文
我想为一个项目构建两个虚拟调查数据框。一个数据框对 Relationship
调查有回应,另一个数据框对 Pulse
调查有回应。
这是每一个的样子 -
关系数据框
#Relationship Data rel_data= data.frame( TYPE=rep('Relationship',446), SURVEY_ID = rep('SURVEY 2018 Z662700',446), SITE_ID=rep('Z662700',446), START_DATE= rep(as.Date('2018-07-01'),446), END_DATE= rep(as.Date('2018-07-04'),446) )
脉冲数据帧
#Pulse Data pulse_data= data.frame( TYPE=rep('Pulse',525), SURVEY_ID = rep('SURVEY 2018 W554800',525), SITE_ID=rep('W554800',525), START_DATE= rep(as.Date('2018-04-01'),525), END_DATE= rep(as.Date('2018-04-04'),525) )
我的Objective
我想根据参考table中的条件,向这两个数据帧中的每一个添加列 .
参考文献 table 包含要添加到两个调查数据框中的每个问题,以及每个问题的详细信息。这是它的样子
参考Table
#Reference Table - Question Bank qbank= data.frame(QUEST_ID=c('QR1','QR2','QR3','QR4','QR5','QP1','QP2','QP3','QP4','QP5','QP6'), QUEST_TYPE=c('Relationship','Relationship','Relationship','Relationship','Relationship', 'Pulse','Pulse','Pulse','Pulse','Pulse','Pulse'), SCALE=c('Preference','Satisfaction','Satisfaction','Satisfaction','Preference','NPS', 'Satisfaction','Satisfaction','Satisfaction','Preference','Open-Ended'), FOLLOWUP=c('No','No','No','No','No','No','Yes','No','Yes','No','No'))
台阶
对于每个调查数据框(Relationship & Pulse),我想执行以下操作 -
1) 在参考 table 中查找它们各自的问题代码,并仅将这些问题添加到数据框中。例如,Relationship
数据框将只有与参考 table 中的 TYPE = 'Relationship'
有关的问题代码。 Pulse
数据帧也是如此。
2) 对每个问题的回答将有条件地添加到每个数据框中。这是条件-
- 如果参考 table 中的
SCALE = 'Preference'
,则响应将是150,100,50,0 or -50
。此外,这些数字将以 任意随机顺序生成。 - 如果参考 table 中的
SCALE = 'NPS'
,则响应范围为0 to 10
。将生成数字,使得 Net Promoter Score (NPS) 等于 50%。 提醒:NPS = 9s 和 10s 的百分比减去 0s 到 6s 的百分比。 - 如果参考 table 中的
SCALE = 'Satisfaction'
,则响应范围为1 (Extremely Dissatisfied) to 5 (Extremely Satisfied)
。将生成数字,使得 1 和 2 的 百分比等于 90%。 - 如果参考 table 中的
SCALE = 'Open-Ended'
,则 确保该列为空(即不包含任何回复)。
我的尝试
使用
如有任何意见,我们将不胜感激
期望输出
我想要的输出 tables 看起来像这样 -
关系数据帧输出
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QR1 QR2 QR3 QR4 QR5
1 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 5 1 2 2
2 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 1 2 2 2
3 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 100 4 5 2 2
4 Relationship SURVEY 2018 Z662700 Z662700 2018-07-01 2018-07-04 150 1 1 2 2
and so on
和脉冲数据帧输出
TYPE SURVEY_ID SITE_ID START_DATE END_DATE QP1 QP2 QP3 QP4 QP5 QP6
1 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 7 1 3 3 100
2 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 8 5 3 1 100
3 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 3 1 4 3 100
4 Pulse SURVEY 2018 W554800 W554800 2018-04-01 2018-04-04 1 2 4 3 100
and so on
会像
rel_data %>%
left_join(qbank, by = c("TYPE" = "QUEST_TYPE")) %>%
select(-FOLLOWUP) %>%
unique() %>%
mutate(val = case_when(SCALE == "Preference" ~ "A",
SCALE == "Satisfaction" ~ "B",
SCALE == "NPS" ~ "C",
TRUE ~ NA_character_ )) %>%
select(-SCALE) %>%
spread(key = QUEST_ID, value = val)
为你工作?
您可以修改 case_when
条件以满足您的需要。