使用具有多个条件的if语句替换数据帧(R)中的因子的问题

问题描述 投票:0回答:1

我有一个数据帧测验,看起来像这样

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}

我无法使其正常运行,除了深夜以外,我找不到原因。

非常感谢您的帮助和启发!

r if-statement multiple-conditions
1个回答
0
投票

您可以使用嵌套的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)))
© www.soinside.com 2019 - 2024. All rights reserved.