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

finding min values between rows in R (dplyr)

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

   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   

这就是我希望它最终看起来的样子

  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 

或者,如果您知道另一种更简单的方法,我们将不胜感激。 谢谢!

您正在 dplyr

中查找 rowwise 函数
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

或使用成对最小值

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)

R基本解:

within(df, {sum=V1+V2; V4=pmin(V1,V2)/sum})