2014-10-06 25 views
0

我試圖找到一種更簡單的方法來實現數據操作的以下目的。數據幀是這樣的:R:根據數據框的另一列中的不同信息組合列

"object" "Date_In" "Date_out" "label" "room" "test" 
"1" "LEU_A" 6 9 "Up" "11z" "c" 
"2" "LEU_A" 1 10 "Down" "14x" "c" 
"3" "LEU_B" 6 8 "Up" "11z" "a1" 
"4" "LEU_B" 10 13 "Down" "14x" "a1" 
"5" "ALL_A" 7 8 "Up" "11z" "c" 
"6" "ALL_A" 1 26 "Down" "1g" "c" 
"7" "CLMIA_A" 5 15 "Up" "11z" "a2" 
"8" "CLMIA_A" 10 10 "Down" "14x" "a2" 
"9" "CLMIA_A" 10 12 "Down" "13w" "a2" 

對於「向上」標籤的所有行(在「標籤」欄),我將它與每個行,它具有相同的對象名稱的結合,但與「唐氏「 標籤。生成的新行(最好在新表中)應該有一列包含向上標記的行中的「Date In」和來自向下標記的行中的「Room」。樣本結果數據框可以關注一下:

"object" "Date_In_Room" 
"1" "LEU_A" "6_14x" 
"2" "LEU_B" "6_14x" 
"3" "ALL_A" "7_1g" 
"4" "CLMIA_A" "5_14x" 
"5" "CLMIA_A" "5_13w" 

注意,有可能標有一個樣品「向上」有一個以上的相關的「向下」標記行,我想包括所有的人。我可以通過首先分開上下行,然後在數據框中逐行循環來實現,但這可能非常耗時,特別是當我有數百個對象時。請讓我知道,如果你有一些更簡單的方法:)

非常感謝您的閱讀。我感謝您的幫助。

海倫

回答

2
library(data.table) 
DT <- as.data.table(your_data_frame) 

RESULTS <- DT[, list(Date_In[label=="Up"], room[label=="Down"]), keyby=object] 


RESULTS 
    object V1 V2 
1: ALL_A 7 1g 
2: CLMIA_A 5 14x 
3: CLMIA_A 5 13w 
4: LEU_A 6 14x 
5: LEU_B 6 14x 
+0

嗨@Ricardo薩波塔,你的方法很好地工作!非常感謝。我現在正在更多地考慮這個軟件包。 – Helene 2014-10-07 19:10:58

相關問題