@@ -1316,4 +1316,136 @@ end
13161316 @test up1_v == up1_t
13171317 @test up1_a == up1_t
13181318
1319+
1320+ main = Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1321+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1322+ x1 = [1.2 , 2.3 ,missing , 2.3 , 1.3 , 2.1 , 0.0 ],
1323+ x2 = [ 5 , 4 , 4 , 2 , 1 ,missing , 2 ])
1324+ transaction = Dataset (group = [" G1" , " G2" ], id = [2 , 1 ],
1325+ x1 = [2.5 , missing ], x2 = [missing , 3 ])
1326+ @test update (main, transaction, on = :group ) == Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1327+ id = [ 2 , 2 , 2 , 2 , 1 , 1 , 1 ],
1328+ x1 = [2.5 , 2.5 ,2.5 ,2.5 , 1.3 , 2.1 , 0.0 ],
1329+ x2 = [ 5 , 4 , 4 , 2 ,3 ,3 ,3 ])
1330+ @test update (main, transaction, on = :group , mode = :missing ) == Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1331+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1332+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1333+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1334+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1335+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1336+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1337+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1338+ @test update (main, transaction, on = :group ) == update (main, view (transaction, [2 ,1 ], :), on = :group )
1339+ @test update (main, transaction, on = :group , mode = :missing ) == update (main, view (transaction, [2 ,1 ], :), on = :group , mode = :missing )
1340+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == update (main, view (transaction, [2 ,1 ], :), on = :group , allowmissing = true , mode = :all )
1341+
1342+ update! (main, transaction, on = :group , mode = :missing )
1343+ @test main == Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1344+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1345+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1346+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1347+ update! (main, transaction, on = :group , allowmissing = true , mode = :all )
1348+ @test main == Dataset (group = [" G1" , " G1" , " G1" , " G1" , " G2" , " G2" , " G2" ],
1349+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1350+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1351+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1352+
1353+ main = Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1354+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1355+ x1 = [1.2 , 2.3 ,missing , 2.3 , 1.3 , 2.1 , 0.0 ],
1356+ x2 = [ 5 , 4 , 4 , 2 , 1 ,missing , 2 ])
1357+ transaction = Dataset (group = [3 ,1 ], id = [2 , 1 ],
1358+ x1 = [2.5 , missing ], x2 = [missing , 3 ])
1359+ @test update (main, transaction, on = :group ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1360+ id = [ 2 , 2 , 2 , 2 , 1 , 1 , 1 ],
1361+ x1 = [2.5 , 2.5 ,2.5 ,2.5 , 1.3 , 2.1 , 0.0 ],
1362+ x2 = [ 5 , 4 , 4 , 2 ,3 ,3 ,3 ])
1363+ @test update (main, transaction, on = :group , mode = :missing ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1364+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1365+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1366+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1367+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1368+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1369+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1370+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1371+ @test update (main, transaction, on = :group ) == update (main, view (transaction, [2 ,1 ], :), on = :group )
1372+ @test update (main, transaction, on = :group , mode = :missing ) == update (main, view (transaction, [2 ,1 ], :), on = :group , mode = :missing )
1373+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == update (main, view (transaction, [2 ,1 ], :), on = :group , allowmissing = true , mode = :all )
1374+
1375+ update! (main, transaction, on = :group , mode = :missing )
1376+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1377+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1378+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1379+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1380+ update! (main, transaction, on = :group , allowmissing = true , mode = :all )
1381+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1382+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1383+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1384+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1385+
1386+ main = Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1387+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1388+ x1 = [1.2 , 2.3 ,missing , 2.3 , 1.3 , 2.1 , 0.0 ],
1389+ x2 = [ 5 , 4 , 4 , 2 , 1 ,missing , 2 ])
1390+ transaction = Dataset (group = PooledArray ([3 ,1 ]), id = [2 , 1 ],
1391+ x1 = [2.5 , missing ], x2 = [missing , 3 ])
1392+ @test update (main, transaction, on = :group ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1393+ id = [ 2 , 2 , 2 , 2 , 1 , 1 , 1 ],
1394+ x1 = [2.5 , 2.5 ,2.5 ,2.5 , 1.3 , 2.1 , 0.0 ],
1395+ x2 = [ 5 , 4 , 4 , 2 ,3 ,3 ,3 ])
1396+ @test update (main, transaction, on = :group , mode = :missing ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1397+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1398+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1399+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1400+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1401+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1402+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1403+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1404+ @test update (main, transaction, on = :group ) == update (main, view (transaction, [2 ,1 ], :), on = :group )
1405+ @test update (main, transaction, on = :group , mode = :missing ) == update (main, view (transaction, [2 ,1 ], :), on = :group , mode = :missing )
1406+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == update (main, view (transaction, [2 ,1 ], :), on = :group , allowmissing = true , mode = :all )
1407+
1408+ update! (main, transaction, on = :group , mode = :missing )
1409+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1410+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1411+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1412+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1413+ update! (main, transaction, on = :group , allowmissing = true , mode = :all )
1414+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1415+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1416+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1417+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1418+
1419+ main = Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1420+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1421+ x1 = [1.2 , 2.3 ,missing , 2.3 , 1.3 , 2.1 , 0.0 ],
1422+ x2 = [ 5 , 4 , 4 , 2 , 1 ,missing , 2 ])
1423+ transaction = Dataset (group = [3.0 ,1.0 ], id = [2 , 1 ],
1424+ x1 = [2.5 , missing ], x2 = [missing , 3 ])
1425+ @test update (main, transaction, on = :group ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1426+ id = [ 2 , 2 , 2 , 2 , 1 , 1 , 1 ],
1427+ x1 = [2.5 , 2.5 ,2.5 ,2.5 , 1.3 , 2.1 , 0.0 ],
1428+ x2 = [ 5 , 4 , 4 , 2 ,3 ,3 ,3 ])
1429+ @test update (main, transaction, on = :group , mode = :missing ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1430+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1431+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1432+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1433+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1434+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1435+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1436+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
1437+ @test update (main, transaction, on = :group ) == update (main, view (transaction, [2 ,1 ], :), on = :group )
1438+ @test update (main, transaction, on = :group , mode = :missing ) == update (main, view (transaction, [2 ,1 ], :), on = :group , mode = :missing )
1439+ @test update (main, transaction, on = :group , allowmissing = true , mode = :all ) == update (main, view (transaction, [2 ,1 ], :), on = :group , allowmissing = true , mode = :all )
1440+
1441+ update! (main, transaction, on = :group , mode = :missing )
1442+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1443+ id = [ 1 , 1 , 2 , 2 , 1 , 1 , 2 ],
1444+ x1 = [1.2 , 2.3 ,2.5 , 2.3 , 1.3 , 2.1 , 0.0 ],
1445+ x2 = [ 5 , 4 , 4 , 2 , 1 ,3 , 2 ])
1446+ update! (main, transaction, on = :group , allowmissing = true , mode = :all )
1447+ @test main == Dataset (group = [3 ,3 ,3 ,3 ,1 ,1 ,1 ],
1448+ id = [ 2 ,2 ,2 ,2 ,1 ,1 ,1 ],
1449+ x1 = [2.5 ,2.5 ,2.5 ,2.5 , missing , missing , missing ],
1450+ x2 = [ missing , missing , missing , missing , 3 ,3 ,3 ])
13191451end
0 commit comments