在 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})
我在 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})