2016-01-13 58 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