如何根据R中的多个条件正确定义新列
我的R代码有以下问题,我已经用12个嵌套的if-else语句修复了这个问题,这是不可取的。由于我无法共享完整的代码和数据,我给出了一个类似的问题。假设我的数据集中有以下列,频率如何根据R中的多个条件正确定义新列,r,if-statement,mutate,R,If Statement,Mutate,我的R代码有以下问题,我已经用12个嵌套的if-else语句修复了这个问题,这是不可取的。由于我无法共享完整的代码和数据,我给出了一个类似的问题。假设我的数据集中有以下列,频率 > test_df ID Frequency 1 1 1 2 2 56 3 3 34 4 4 22 5 5 9 6 6 8 7 7 50 8 8 7 现在,我想在tabel的
> test_df
ID Frequency
1 1 1
2 2 56
3 3 34
4 4 22
5 5 9
6 6 8
7 7 50
8 8 7
现在,我想在tabel的基础上修改一个新的列,它对频率进行分类,即
htbl
freq_interval category
1 6 A
2 18 B
3 20 C
4 30 D
5 40 E
现在,我想在这个表的基础上变异一个新列,如下所示:如果频率小于6,给新列一个值a。如果频率小于18,但大于6,给新列一个值B。如果频率小于20,但大于18,给它一个值C,依此类推。因此,我想要的新测试将是:
ID Frequency mutated_column
1 1 1 A
2 2 56 <NA>
3 3 34 E
4 4 22 D
5 5 9 B
6 6 8 B
7 7 50 <NA>
8 8 7 B
我怎样才能做到干净呢
提前感谢我们可以在此处使用findInterval或cut
看看dplyr::case_when。谢谢!我现在就去调查!而且效果很好,这也是我真正的问题。谢谢!我的公羊谢谢你
test_df$mutated_column <- htbl$category[findInterval(test_df$Frequency,
htbl$freq_interval) + 1]
test_df
# ID Frequency mutated_column
#1 1 1 A
#2 2 56 <NA>
#3 3 34 E
#4 4 22 D
#5 5 9 B
#6 6 8 B
#7 7 50 <NA>
#8 8 7 B
cut(test_df$Frequency, breaks = c(-Inf, htbl$freq_interval),labels = htbl$category)
#[1] A <NA> E D B B <NA> B
#Levels: A B C D E