web-gelistirme-sc.com

veri çerçevesinde 2 tarih sütunu arasındaki gün sayısının hesaplanması

Yyyy/mm/dd ..__ biçiminde iki tarih sütununa sahip bir veri çerçevem ​​var: Veri çerçevesi içindeki her bir gözlem için bu iki tarih arasındaki gün sayısını hesaplamaya çalışıyorum (ve ile yeni bir değişken oluşturmaya çalışıyorum). İçinde bu gün sayısı).

Şimdiye kadar burada verilen cevabı kullanarak denedim:

2 tarih arasındaki hafta içi gün sayısını R

ancak kodu düzenlemek, böylece yalnızca hafta günü sayısı yerine toplam gün sayısını hesaplar. Bu sadece söyleyerek hata geldi:

Error in del/by : non-numeric argument to binary operator
In addition: Warning message:
In Ops.factor(to, from) : - not meaningful for factors

Ayrıca bu kodu kullanmayı da denedim:

finish <- as.Date(survey$date, format="%yyyy/%mm/%dd")
start <- as.Date(survey$tx_start, format="%yyyy/%mm/%dd")
date_diff<-as.data.frame(finish-start)

"cbind" veya "days" veri çerçevesini, içindeki veri içeren veri anketi "anketi" ile birleştirmek için "cbind" veya eşdeğer bir şey kullanma planı.

Bu bana herhangi bir hata vermese de, "bitiş" ve "başlangıç" nesnelerindeki gözlemlerin tümü "NA_real_" ve date_diff veri çerçevesi bu nedenle NA olarak listelenen tüm gözlemleri içeriyor.

Biri beni doğru yöne işaret edebilseydi, bu harika olurdu! Bulduğum tüm diğer soru değişkenler içindeki tarihlerle değil, bireysel tarihler olarak ilgileniyor gibi görünüyor ve bu teknikleri değişkenlere uygulamak benim için işe yaramıyor.

Şimdiden teşekkürler

31
Timothy Alston

Verilerinizi görmeden (bize göstermek için dput(head(survey)) çıktısını kullanabilirsiniz) bu karanlıkta çekilmiş

survey <- data.frame(date=c("2012/07/26","2012/07/25"),tx_start=c("2012/01/01","2012/01/01"))

survey$date_diff <- as.Date(as.character(survey$date), format="%Y/%m/%d")-
                  as.Date(as.character(survey$tx_start), format="%Y/%m/%d")
survey
       date   tx_start date_diff
1 2012/07/26 2012/01/01  207 days
2 2012/07/25 2012/01/01  206 days
44
Roland

difftime işlevini aşağıdaki gibi kullanarak veri çerçevesindeki sütunlardaki tarihler arasındaki farkı bulabilirsiniz:

df$diff_in_days<- difftime(df$datevar1 ,df$datevar2 , units = c("days"))
35
26lane

As.Date formatlarını doğru kullanmanız gerekir.

Örneğin.

x = '2012/07/25'
xd = as.Date(x,'%Y/%m/%d')
xd    # Prints "2012-07-25"

R tarih biçimleri * nix biçimlerine benzemektedir.

Bir Typeof (xd) Yapmak, bunu çift yani. 1970'den beri günler.

3
Pete855217

Ronald'ın örneğinde, tarih biçimleri farklıysa (aşağıda gösterildiği gibi), format parametresini değiştirin

survey <- data.frame(date=c("2012-07-26","2012-07-25"),tx_start=c("2012-01-01","2012-01-01"))

survey$date_diff <- as.Date(as.character(survey$date), format="%Y-%m-%d")-
              as.Date(as.character(survey$tx_start), format="%Y-%m-%d")

anket:

   date      tx_start     date_diff
1 2012-07-26     2012-01-01    207 days
2 2012-07-25     2012-01-01    206 days
0
Motoman