Изменение переменной неделя + день (39 + 3) на неделю или дни в R - PullRequest
0 голосов
/ 08 апреля 2019

Я работаю с переменной [фактор] длины беременности, которая указана в количестве недель + дней (39 + 3), и мне нужно иметь возможность работать с целым числом, которое я могу сравнить между группами и вычислить среднее , Так что либо 276 дней (37 * 7 + 3), либо 37,43 недели (37+ (3/7)). Любое предложение?

Ответы [ 3 ]

0 голосов
/ 08 апреля 2019

У вас должна быть возможность поиграть с lubridate для такого рода адреса.

При условии, что ваша переменная похожа на a+b, где a в неделях, а b в днях.

library(lubridate)
s <- "39+3"
s <- gsub("$", "d", gsub("\\+", "W ", s)) #Add W and d to denote Weeks and days
s
[1] "39W 3d"
period(s) #Convert into a period format
[1] "276d 0H 0M 0S"
as.numeric(period(s), "days") #Change that to noofdays
[1] 276
0 голосов
/ 08 апреля 2019

некоторые данные с data.table ..

образцы данных

library( data.table )
set.seed(123)
DT <- data.table( pregnancy.length = paste0( sample(20:42, 100, replace = TRUE), 
                                             "+",
                                             sample(1:6, 100, replace = TRUE) ), 
                  stringsAsFactors = FALSE )

код

#first, split the pregnancy-length on the `+`-sign  
DT[, c("weeks", "days") := lapply( tstrsplit( pregnancy.length, "\\+"), as.numeric )]
#then caluculate weeks, days, or both
DT[, `:=`( week.total = weeks + days / 7, day.total = weeks * 7 + days )]

** вывод

head(DT)
#    pregnancy.length weeks days week.total day.total
# 1:             26+4    26    4   26.57143       186
# 2:             38+2    38    2   38.28571       268
# 3:             29+3    29    3   29.42857       206
# 4:             40+6    40    6   40.85714       286
# 5:             41+3    41    3   41.42857       290
# 6:             21+6    21    6   21.85714       153
0 голосов
/ 08 апреля 2019

Два (целые дни и дробные недели) полностью эквивалентны, но вы, вероятно, должны пойти на дробные недели, поскольку а) недели легче соотносить и б) дробные недели непрерывны, целые дни дискретны, а непрерывные данныечасто проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...