[英]Matching multiple columns in two dataframes in R using the merge or match function
[英]Using Difftime function on Multiple columns of two DataFrames in R
我有兩個數據幀,每個數據幀包含時間戳列,如下圖所示:
數據框1:
數據框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))
如果df1
和df2
的尺寸相同,則可以減去以天為單位的差
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
遍歷df1
和df2
列以在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.