擺脫行我有一個大的數據幀與如列:獲得具有重複屬性中的R
ID, time, OS, IP
該數據幀的每一行對應一個條目。在某個ID的數據框中存在幾個條目(行)。我想擺脫這些多行(顯然其他屬性將不同的相同的ID)。或者放在不同的位置:我只希望每個ID都有一個單獨的條目(行)。
當我在ID列上使用unique
時,我只收到關卡(或每個唯一ID),但我還想保留其他屬性。 我試圖使用apply(x,2,unique(data$ID))
,但這也不起作用。
擺脫行我有一個大的數據幀與如列:獲得具有重複屬性中的R
ID, time, OS, IP
該數據幀的每一行對應一個條目。在某個ID的數據框中存在幾個條目(行)。我想擺脫這些多行(顯然其他屬性將不同的相同的ID)。或者放在不同的位置:我只希望每個ID都有一個單獨的條目(行)。
當我在ID列上使用unique
時,我只收到關卡(或每個唯一ID),但我還想保留其他屬性。 我試圖使用apply(x,2,unique(data$ID))
,但這也不起作用。
subset(data,!duplicated(data$ID))
應該做的伎倆
非常感謝 - 我即將絕望...... – CatholicEvangelist 2010-05-03 16:21:25
這將工作,如果你沒有任何啓發式的想法如何選擇其他數據。似乎對我來說是一個非常奇怪的用例... – Shane 2010-05-03 16:27:10
正是我所需要的詹姆斯,謝謝。 – 2010-06-13 15:16:06
如果你想保持每一行對應一個ID,但在各行不同的數據,那麼你需要一些邏輯決定放棄其他行。例如:
df <- data.frame(ID=c(1, 2, 2, 3), time=1:4, OS="Linux")
df
ID time OS
1 1 1 Linux
2 2 2 Linux
3 2 3 Linux
4 3 4 Linux
現在,我將保留最大時間值和最後OS值:
library(plyr)
unique(ddply(df, .(ID), function(x) data.frame(ID=x[,"ID"], time=max(x$time), OS=tail(x$OS,1))))
ID time OS
1 1 1 Linux
2 2 3 Linux
4 3 4 Linux
非常感謝您的詳細解答! – CatholicEvangelist 2010-05-03 16:21:50
你必須定義你想與其他屬性做具有相同ID的觀察是什麼當時不同意。 – Aniko 2010-05-03 16:07:36
好吧,我想看到用戶的操作系統分佈... 因此,當我有每個用戶只有一個條目的數據框,Id做:mytable < - 表(數據集$ os.name),並做一些事後繪製... – CatholicEvangelist 2010-05-03 16:11:39