我試圖擺脫一個數據框/矩陣的值不同的其他值/類。這種彙總方法是否可以有效地處理數百萬的數據?
即下面是一個例子初始表:
P | V
------ | ------
par | 123
par | 1234
par | 12345
par | 123456
pat | 123
pat | 1234
pat | 12345
pat | 1234567
pay | 123456
pay | 789
pay | 967
正如你可以看到有一些是獨特的和不同的一些P列的值的值(V列)。這些值是
P | V
------ | ------
pat | 1234567
pay | 789
pay | 967
並且這是預期的輸出。
爲了得到這個,我使用了聚合函數(見下文)),但實際的數據將會大得多。他們可以達到2-3百萬行,甚至更多。
您是否認爲下面的代碼可以工作並響應這麼多的數據,還有另一種方法可以提高效率?
mat = c("par","par","par","par","pat","pat","pat","pat","pay","pay","pay")
mat = as.data.frame(cbind("P"=mat, "V"=c("123","1234","12345","123456","123","1234","12345","1234567","123456","789","967")))
uniquePs = matrix(unique(mat$P))
diff = aggregate(P~V, mat, FUN=unique)
distinctVs = diff[which(grepl(":|," , as.character(diff$P)) == FALSE),]
distinctVs$P = uniquePs[as.numeric(distinctVs$P)]
謝謝。
你的意思'長度(diff $ P)> 1'而不是'grepl' – akrun
是的。這也可以起作用 –