Вычислить годы опыта

#r #date

#r #Дата

Вопрос:

У меня есть воспроизводимый фрейм данных:

 df <- data.frame(ID =c(864,121,582,300,765,56,571,819,923,789,438,987,30,446,369,445),
                 city=c("del","mum","nav","pun","bang","chen","triv","vish","del","mum","bang","vish","bhop","kol","noi","gurg"),
                 name= c("xab","Lan","mun","mmc","aaf","nnhu","njam","jiha","ntha","gydbt","hytb","kula","huta","vcge","bhsue","nudj"),
                 DOJ = c("9/5/2005","8/23/2006","3/30/2006","5/29/2009","12/29/2009","6/20/2005","10/2/2010","11/15/2003","3/3/2004","4/23/2004","7/28/2003","8/27/2004","6/14/2007","3/24/2007","9/29/2009","9/4/2007"))

  

Я пытаюсь создать функцию, которая будет запрашивать имя столбца министерства юстиции, например, дату найма == «Министерство юстиции»
затем изменит новый столбец и вычислит срок пребывания в этом столбце.

Также, если указана дата рождения, измените новый столбец, чтобы дата найма была больше, чем дата рождения 20.

Я пытался использовать mondf и difftime , но не могу создать функцию для этого.

Вывод должен быть таким:

введите описание изображения здесь

Ответ №1:

Попробуйте это решение:

 #Format date
df$DOJ <- as.Date(df$DOJ,'%m/%d/%Y')
#Compute variable
df$Tenure <- round(as.numeric(difftime(Sys.Date(),df$DOJ,units = 'weeks')/52.25),0)
  

Вывод:

     ID city  name        DOJ Tenure
1  864  del   xab 2005-09-05     15
2  121  mum   Lan 2006-08-23     14
3  582  nav   mun 2006-03-30     14
4  300  pun   mmc 2009-05-29     11
5  765 bang   aaf 2009-12-29     11
6   56 chen  nnhu 2005-06-20     15
7  571 triv  njam 2010-10-02     10
8  819 vish  jiha 2003-11-15     17
9  923  del  ntha 2004-03-03     16
10 789  mum gydbt 2004-04-23     16
11 438 bang  hytb 2003-07-28     17
12 987 vish  kula 2004-08-27     16
13  30 bhop  huta 2007-06-14     13
14 446  kol  vcge 2007-03-24     13
15 369  noi bhsue 2009-09-29     11
16 445 gurg  nudj 2007-09-04     13
  

В вашем наборе данных нет даты рождения, но условие, подобное df$NewVar <- df$Date1>Date2 20 в новой переменной, должно привести к желаемому результату.

Комментарии:

1. сейчас я получаю ошибку, ранее это была рабочая ошибка в as.POSIXlt.character(x, tz, …): символьная строка не находится в стандартном однозначном формате

2. @rjunkie2 Пожалуйста, проверьте структуру ваших данных. Возможно, некоторые даты являются коэффициентами или имеют другой формат.

3. df $ NewVar <- df $ Hire_date> df $ DOB 20 ok будет проверяться, но это также приводит к ошибке в df $ DOB 20: нечисловой аргумент для двоичного оператора

4. > класс (Hire_date) [1] «Дата», но он говорит только о формате даты

5. Ваш подход должен сработать. Я тестировал на фиктивных данных, и это работает. Любая из переменных является символьной!