Как преобразовать данные в формате отношения (например, 3: 2) в десятичное в R? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть переменная, называемая женским / мужским отношением в качестве символа.

>  head(univ$female_male_ratio)

[1] 33 : 67  37 : 63  42:58:00 45:55:00 46:54:00

Как преобразовать этот тип данных в числовой? например, первая строка 33:67, я хочу, чтобы она была 0,492, что составляет 33/67

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Опция, использующая gsubfn

library(gsubfn)
as.numeric(sub(":.*", "", gsubfn("([0-9]+):([0-9]+)",
              ~ as.numeric(x)/as.numeric(y), ratio)))
#[1] 0.4925373 0.5873016 0.7241379 0.8181818 0.8518519

данные

ratio <- c("33:67","37:63","42:58:00","45:55:00","46:54:00")
0 голосов
/ 09 ноября 2018

Мы можем разделить на «:», используя strsplit, а затем выполнить цикл по каждому элементу списка, используя sapply, и получить соотношение первого элемента ко второму элементу.

sapply(strsplit(ratio, ":"), function(x) as.numeric(x[1])/as.numeric(x[2]))
#[1] 0.4925373 0.5873016 0.7241379 0.8181818 0.8518519

данные

ratio <- c("33:67","37:63","42:58:00","45:55:00","46:54:00")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...