簡體   English   中英

在R中兩個DataFrame的多列上使用Difftime函數

[英]Using Difftime function on Multiple columns of two DataFrames in R

我有兩個數據幀,每個數據幀包含時間戳列,如下圖所示:

數據框1:

數據框1

數據框2:

數據框2

我想找到數據幀的各列之間的時差,例如:DF1的Column1的各行與DF2的Column1的各行之間的時差。

我在上圖中僅在每個數據幀中提到了三列,盡管我的原始數據集中的每一列中都有257列,但我目前正在分別使用以下命令查找差異:

diff_time_1<- difftime(df1$t1,df2$l1)
diff_time_2<- difftime(df1$t2,df2$l2)..so on

如果我嘗試對所有257列執行此操作,則需要花費很多精力,我通過使用apply函數和for循環嘗試了各種方法,但它們似乎沒有用。

請幫助我找到一個解決方案,使我可以一次將difftime函數應用於整個列。

我們可以使用Map在'df1','df2'的相應列上應用difftime以獲得vector s的list

Map(difftime, df1, df2)

如果datetime列只是該列的一個子集,則子集數據集並應用difftime

Map(difftime, df1[subCols], df2[subCols])
#DATA
mydates = seq.POSIXt(from = as.POSIXct("1970-01-01"),
                     to = as.POSIXct("1970-12-01"), by = "hours")
set.seed(42)
df1 = data.frame(C1 = sample(mydates, 5), C2 = sample(mydates, 5))
df2 = data.frame(C1 = sample(mydates, 5), C2 = sample(mydates, 5))

如果df1df2的尺寸相同,則可以減去以天為單位的差

df1 - df2
#               C1              C2
#1  152.70833 days -140.62500 days
#2   72.79167 days  -80.70833 days
#3 -216.58333 days    5.75000 days
#4  192.00000 days   60.79167 days
#5   59.91667 days   48.33333 days

或者您可以使用sapply遍歷df1df2列以在difftime使用它們

sapply(1:2, function(i) difftime(time1 = df1[,i], time2 = df2[,i], units = "hours"))
#      [,1]  [,2]
#[1,]  3665 -3375
#[2,]  1747 -1937
#[3,] -5198   138
#[4,]  4608  1459
#[5,]  1438  1160

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM