Я думаю, ваши данные можно реорганизовать по столбцам. Этот код берет каждую вторую строку и помещает их в отдельный столбец:
ind <- seq(1, nrow(dat), by = 2)
dat2 <- data.frame(V1 = dat[ind,], V2=dat[ind+1,])
dat2
# V1 V2
# 1 10779 911
# 2 13897 2780
# 3 13552 1112
# 4 15352 2036
# 5 11779 790
Отсюда ваша математика проста data.frame
операций, будь то базовые, аккуратные или датированные:
База
with(dat2, V2 / (V1 + V2))
# [1] 0.07792985 0.16669665 0.07583197 0.11709225 0.06285305
или как новый столбец:
within(dat2, { newcol = V2 / (V1 + V2) })
# V1 V2 newcol
# 1 10779 911 0.07792985
# 2 13897 2780 0.16669665
# 3 13552 1112 0.07583197
# 4 15352 2036 0.11709225
# 5 11779 790 0.06285305
tidyverse
library(dplyr)
dat2 %>%
mutate(newcol = V2 / (V1 + V2))
# V1 V2 newcol
# 1 10779 911 0.07792985
# 2 13897 2780 0.16669665
# 3 13552 1112 0.07583197
# 4 15352 2036 0.11709225
# 5 11779 790 0.06285305
data.table
library(data.table)
as.data.table(dat2)[, newcol := V2 / (V1 + V2) ][]
# V1 V2 newcol
# 1: 10779 911 0.07792985
# 2: 13897 2780 0.16669665
# 3: 13552 1112 0.07583197
# 4: 15352 2036 0.11709225
# 5: 11779 790 0.06285305