我有一个数据帧测验,看起来像这样
Participant Group Test Marks
1 1 Qz1 2.4
1 1 Qz2 3.2
1 1 Qz3 2
1 1 Qz4 1
2 1 Qz1 3
2 1 Qz2 4
2 1 Qz3 3
2 1 Qz4 4
3 2 Qz1 4
3 2 Qz2 2
3 2 Qz3 3
3 2 Qz4 2
假定所有列都是测验$标记以外的因素。
我想使用类似这样的方法来创建另一个因子列quiz $ zip:
if ((quiz$Group==1) & (quiz$Test=='Qz2'| quiz$Test == 'Qz4'))
{quiz$zip<-3}
else if ((quiz$Group==1) & (quiz$Test=='Qz1'| quiz$Test == 'Qz3'))
{quiz$zip<-2}
else
{quiz$zip<-1}
我无法使其正常运行,除了深夜以外,我找不到原因。
非常感谢您的帮助和启发!
您可以使用嵌套的ifelse
transform(df, zip = factor(ifelse(Group == 1 & Test %in% c('Qz2', 'Qz4'), 1,
ifelse(Group == 1 & Test %in% c('Qz1', 'Qz3'), 2, 3))))
或case_when
中的dplyr
df %>%
mutate(zip = factor(case_when(Group == 1 & Test %in% c('Qz2', 'Qz4') ~ 1,
Group == 1 & Test %in% c('Qz1', 'Qz3') ~ 2,
TRUE ~ 3)))