R:如何正确使用IF?

Mad*_*eva 2 if-statement r

我有两列值,如下所示:

>bb
          GDis      BDis         
    1   12.291488  8.009909  
    2   11.283319 13.625103 
    3   6.674549  8.629232 
    4   13.493121 17.175888 
    5   9.550731  9.867878 
    6   9.193895  9.785301 
    7   10.541702 10.941371 
    8   9.849527  9.496284  
    9   8.682287  8.133774  
    10  8.439381  4.335260
Run Code Online (Sandbox Code Playgroud)

我需要添加额外的列并调用它Index来计算比率GDis/BDisif if GDis更大,BDis/GDis如果BDis更大.

我怎么做?

Sve*_*ein 7

你可以使用pmaxpmin.

transform(bb, Index = pmax(GDis, BDis) / pmin(GDis, BDis))
Run Code Online (Sandbox Code Playgroud)

您也可以使用算术:

transform(bb, Index = (GDis / BDis) ^ (1 - 2 * (BDis > GDis)))
Run Code Online (Sandbox Code Playgroud)

结果:

        GDis      BDis    Index
1  12.291488  8.009909 1.534535
2  11.283319 13.625103 1.207544
3   6.674549  8.629232 1.292856
4  13.493121 17.175888 1.272937
5   9.550731  9.867878 1.033207
6   9.193895  9.785301 1.064326
7  10.541702 10.941371 1.037913
8   9.849527  9.496284 1.037198
9   8.682287  8.133774 1.067436
10  8.439381  4.335260 1.946684
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

尝试

 transform(bb, Index=ifelse(GDis>BDis, GDis/BDis, BDis/GDis))
 #        GDis      BDis      adn
 #1  12.291488  8.009909 1.534535
 #2  11.283319 13.625103 1.207544
 #3   6.674549  8.629232 1.292856
 #4  13.493121 17.175888 1.272937
 #5   9.550731  9.867878 1.033207
 #6   9.193895  9.785301 1.064326
 #7  10.541702 10.941371 1.037913
 #8   9.849527  9.496284 1.037198
 #9   8.682287  8.133774 1.067436
 #10  8.439381  4.335260 1.946684
Run Code Online (Sandbox Code Playgroud)