2016-01-13 11 views
-1
 ax ay az bx by bz cx cy cz dx dy dz ex ey ez Hid  PX  PY  PZ 
1 330 295 998 0 0 0 0 0 0 0 0 0 0 0 0 0 279.6626 310.3374 923.4111 
2  0 0 0 260 375 941 0 0 0 0 0 0 0 0 0 0 279.6626 310.3374 923.4111 
3  0 0 0 245 375 949 0 0 0 0 0 0 0 0 0 0 279.6667 310.2424 924.7394 
4 330 295 998 0 0 0 0 0 0 0 0 0 0 0 0 0 279.6667 310.2424 924.7394 

對於相同的PX,PY和PZ值我要合併的行 EG的輸出應該合併多行與一些類似的列值

ax ay az bx by bz cx cy cz dx dy dz ex ey ez Hid  PX  PY  PZ 
1 330 295 998 260 375 941 0 0 0 0 0 0 0 0 0 0 279.6626 310.3374 923.4111 
2 330 295 998 245 375 949 0 0 0 0 0 0 0 0 0 0 279.6667 310.2424 924.7394 
+0

你不說你要輸出什麼,但怨婦可以看看join()方法從dplyr包的https://stat545-ubc.github。 IO /位001_dplyr-cheatsheet.html – MLavoie

+1

另請參閱:http://stackoverflow.com/questions/9723208/aggregate-multiple-variables-simultaneously – Jaap

回答

3

隨着data.table,你可以試試這個(您data.frame被稱爲df):

library(data.table) 
setDT(df)[, lapply(.SD, max), by=.(PX, PY, PZ)] 
#   PX  PY  PZ ax ay az bx by bz cx cy cz dx dy dz ex ey ez Hid 
#1: 279.6626 310.3374 923.4111 330 295 998 260 375 941 0 0 0 0 0 0 0 0 0 0 
#2: 279.6667 310.2424 924.7394 330 295 998 245 375 949 0 0 0 0 0 0 0 0 0 0 
+0

嘿這不能正常工作 – user459

+1

@HimaanshuGauba你能更具體嗎?它與示例數據一起工作。如果是因爲列重新排序,你可以改變它。 – Cath