[英]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.