繁体   English   中英

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

[英]finding min values between rows in R (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   

这就是我最终想要的样子

  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 

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

或使用成对最小

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)

您正在寻找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

R基本解决方案:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM