在R(dplyr)中的行之间查找最小值

use*_*605 0 r dataframe dplyr

我在R中有这个数据帧,其中sum列是V1和V2的总和,我想要做的是使用mutate函数(在dplyr中)创建一个新的列(V4),它取V1之间的MIN值和V2并将其除以总和.

   V1 V2 sum   
1  2  3  5  
2  2  4  6   
3  1  4  5  
4  5  3  8   
5  5  3  8   
6  3  2  5   
Run Code Online (Sandbox Code Playgroud)

这是我最终想要的样子

  V1 V2 sum V4  
1  2  3  5  .4
2  2  4  6  .33
3  1  4  5  .2
4  5  3  8  .375
5  5  3  8  .375
6  3  2  5  .4 
Run Code Online (Sandbox Code Playgroud)

或者,如果你知道另一种更容易理解的方式.谢谢!

dim*_*_ps 8

或者使用成对分钟

df <- data.frame(V1=c(2, 2, 1, 5, 5, 3),
             V2=c(3, 4, 4, 3, 3, 2))

library(dplyr)

df %>% mutate(sum=V1+V2, V4=pmin(V1, V2)/sum)
Run Code Online (Sandbox Code Playgroud)


cde*_*man 5

您正在寻找rowwise功能dplyr

library(dplyr)

df %>%
    rowwise() %>%
    mutate(V4 = min(V1, V2)/sum)

Source: local data frame [6 x 4]
Groups: <by row>

  V1 V2 sum        V4
1  2  3   5 0.4000000
2  2  4   6 0.3333333
3  1  4   5 0.2000000
4  5  3   8 0.3750000
5  5  3   8 0.3750000
6  3  2   5 0.4000000
Run Code Online (Sandbox Code Playgroud)