我在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)
或者,如果你知道另一种更容易理解的方式.谢谢!
或者使用成对分钟
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)
您正在寻找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)