Datensätze mit R auswählen ?
Datensätze mit R auswählen ?
Hallo zusammen,
ich bin neu hier und habe mit R noch nie gearbeitet. Bisher konnte ich privat (Wirtschaftlichkeitsberechnungen, Aktien usw.)
und beruflich (Controller) alles mit Excel, Pivot, Access und VBA lösen können.
Aktuell beschäftigt mich ein rein privates Projekt bei dem Solver an die Grenzen kommt.
Und zwar habe ich eine Tabelle mit Datensätzen (ich erkläre mal alles mit Autos) die jeweils Beschreibungen oder Eigenschaften haben (z.B. Hersteller, Aufbau, Sprit) und Werte haben (PS, Kosten, Verbrauch).
Dann möchte ich Vorgaben machen wie:
Ich brauche 18-22 Autos
Die dürfen maximal X kosten
Die sollen so viel PS wie möglich haben
So wenig wie möglich verbrauchen
Vom Hersteller X maximal 4 Modelle
vom Hersteller Y mindestens 2 Modelle
Maximal 10 Diesel
Mit Solver kriege ich das einigermaßen hin, muss jedoch Einschränkungen vornehmen (nicht alle Datensätze, nicht alle Kriterien) und ich bezweifel, dass das Ergebnisse die beste Kombination ist.
Die Frage ist also kann R sowas oder ist R eher dafür da die Datensätze zu analysieren.
Wenn R das kann, könnt ihr mir ein paar Befehle nennen mit denen ich sowas machen könnte?
Danke !!
ich bin neu hier und habe mit R noch nie gearbeitet. Bisher konnte ich privat (Wirtschaftlichkeitsberechnungen, Aktien usw.)
und beruflich (Controller) alles mit Excel, Pivot, Access und VBA lösen können.
Aktuell beschäftigt mich ein rein privates Projekt bei dem Solver an die Grenzen kommt.
Und zwar habe ich eine Tabelle mit Datensätzen (ich erkläre mal alles mit Autos) die jeweils Beschreibungen oder Eigenschaften haben (z.B. Hersteller, Aufbau, Sprit) und Werte haben (PS, Kosten, Verbrauch).
Dann möchte ich Vorgaben machen wie:
Ich brauche 18-22 Autos
Die dürfen maximal X kosten
Die sollen so viel PS wie möglich haben
So wenig wie möglich verbrauchen
Vom Hersteller X maximal 4 Modelle
vom Hersteller Y mindestens 2 Modelle
Maximal 10 Diesel
Mit Solver kriege ich das einigermaßen hin, muss jedoch Einschränkungen vornehmen (nicht alle Datensätze, nicht alle Kriterien) und ich bezweifel, dass das Ergebnisse die beste Kombination ist.
Die Frage ist also kann R sowas oder ist R eher dafür da die Datensätze zu analysieren.
Wenn R das kann, könnt ihr mir ein paar Befehle nennen mit denen ich sowas machen könnte?
Danke !!
Re: Datensätze mit R auswählen ?
Klar kann R das und es bringt sogar einen Datensatz mit Autos mit, damit alle über das Gleiche reden können. Ich habe deine Beispiele der Reihenfolge nach abgearbeitet, die letzten beiden aber nicht gemacht (weil sie vorherigen Beispielen gleichen). Ich hoffe es ist übersichtlich. Wenn du R noch nicht installiert hast, kannst du den Code hier laufen lassen: https://rdrr.io/snippets/
Code: Alles auswählen
# mtcars angucken
head(mtcars)
# 18-22 Autos auswählen
nrow(mtcars) # mtcars enthält 32 Autos
mtcars[sample(nrow(mtcars), 18), ] # sample zieht zufällig 18 Zeilen aus dem Datensatz mtcars
mtcars[sample(nrow(mtcars), sample(18:22, 1)), ] # wie zuvor, aber mit einer Zufallszahl von 18 bis 22
names(mtcars) # Preis ist leider kein Bestandteil von mtcars, aber nehmen wir mal PS (hp)
mtcars[mtcars$hp < 100, ] # alle Autos mit weniger als 100 PS (statt Preis)
mtcars[which(mtcars$hp == max(mtcars$hp)), ] # wenn man möglichst viele PS möchte
mtcars[which(mtcars$mpg == max(mtcars$mpg)), ] # wenn man möglichst wenig verbrauchen möchte
companies <- substring(rownames(mtcars), 1, regexpr(" ", rownames(mtcars)) - 1) # Namensvektor aus den Reihennamen erstellen
companies <- as.factor(companies) # ändern des Datentyps
summary(companies) # für das Beispiel kommt nur Mercedes in Frage
which(companies == "Merc")
mtcars[sample(which(companies == "Merc"), 4), ] # 4 mal Mercedes
Re: Datensätze mit R auswählen ?
Hallo grafZahl,
willkommen im Forum!
Ein wenig klingt es so, als ob Du alle diese Kriterien gleichzeitig erfüllen möchtest.
Falls das so ist:
es handelt sich um sich teilweise widersprechende Zielgrößen, z.B. möglichst hohe Leistung und möglichst niedriger Verbrauch an Kraftstoff. Grob gesagt ist es dann eine Optimierung der Auswahl mit einer ganzen Reihe von Nebenbedingungen. Ohne eine passende mathematische Modellierung kann man nur rumstochern. Was R bzw. entsprechende Zusatzpakete leisten findest Du beschrieben in dem passenden TaskView: https://cran.r-project.org/web/views/Optimization.html
Gerne kannst Du auch beschreiben, wie Du es bisher erledigt hast.
Kannst Du uns anhand eines reproduzierbaren Beispieles das gewünschte Ergebnis zeigen? viewtopic.php?f=20&t=11
Gruß, Jörg
willkommen im Forum!
Ein wenig klingt es so, als ob Du alle diese Kriterien gleichzeitig erfüllen möchtest.
Falls das so ist:
es handelt sich um sich teilweise widersprechende Zielgrößen, z.B. möglichst hohe Leistung und möglichst niedriger Verbrauch an Kraftstoff. Grob gesagt ist es dann eine Optimierung der Auswahl mit einer ganzen Reihe von Nebenbedingungen. Ohne eine passende mathematische Modellierung kann man nur rumstochern. Was R bzw. entsprechende Zusatzpakete leisten findest Du beschrieben in dem passenden TaskView: https://cran.r-project.org/web/views/Optimization.html
Gerne kannst Du auch beschreiben, wie Du es bisher erledigt hast.
Kannst Du uns anhand eines reproduzierbaren Beispieles das gewünschte Ergebnis zeigen? viewtopic.php?f=20&t=11
Gruß, Jörg
Re: Datensätze mit R auswählen ?
Hallo zusammen und danke für die ersten Rückmeldungen.
Also es müssen alle Kriterien erfüllt werden
und von diesem Pool dann die Kombination mit der größten Summe der Zielwerte ausgegeben werden, "also am meisten PS".
Ich habe unten mal die Basisdaten reinkopiert.
Es gibt folgende Kriterien:
Kategorie A mindestens 1 und maximal 1 auswählen
Kategorie B mindestens 3 und maximal 5 auswählen
Kategorie C mindestens 4 und maximal 6 auswählen
Kategorie D mindestens 1 und maximal 3 auswählen
Insgesamt 13 auswählen
Kosten sollen maximal 50 sein
von der Gruppe 1 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 2 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 3 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 4 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 5 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 6 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 7 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 8 sollen min. 2 und max. 2 ausgewählt sein
von der Gruppe 9 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 10 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 11 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 12 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 13 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 14 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 15 sollen min. 0 und max. 0 ausgewählt sein
von der Gruppe 16 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 17 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 18 sollen min. 0 und max. 2 ausgewählt sein
Mein Excel Pivot Ergebnis:
1 in Kategorie A -> OK
3 in Kategorie B -> OK
6 in Kategorie C -> OK
3 in Kategorie D -> OK
Gesamt ausgewählt 13 -> OK
Kosten 49,9 -> OK
Von Gruppe 8 wurden 2 gewählt, von Gruppe 15 wurden 0 gewählt -> OK
von den anderen Gruppen nie mehr als 2 -> OK
Summe der Leistungswerte = 1310. Wer schafft mehr?
Viele Grüße
Graf Zahl
Also es müssen alle Kriterien erfüllt werden
und von diesem Pool dann die Kombination mit der größten Summe der Zielwerte ausgegeben werden, "also am meisten PS".
Ich habe unten mal die Basisdaten reinkopiert.
Es gibt folgende Kriterien:
Kategorie A mindestens 1 und maximal 1 auswählen
Kategorie B mindestens 3 und maximal 5 auswählen
Kategorie C mindestens 4 und maximal 6 auswählen
Kategorie D mindestens 1 und maximal 3 auswählen
Insgesamt 13 auswählen
Kosten sollen maximal 50 sein
von der Gruppe 1 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 2 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 3 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 4 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 5 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 6 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 7 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 8 sollen min. 2 und max. 2 ausgewählt sein
von der Gruppe 9 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 10 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 11 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 12 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 13 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 14 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 15 sollen min. 0 und max. 0 ausgewählt sein
von der Gruppe 16 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 17 sollen min. 0 und max. 2 ausgewählt sein
von der Gruppe 18 sollen min. 0 und max. 2 ausgewählt sein
Mein Excel Pivot Ergebnis:
Code: Alles auswählen
Auswahl der ID
1001
1002
1024
1032
1043
1077
1080
1085
1089
1090
1120
1137
1143
3 in Kategorie B -> OK
6 in Kategorie C -> OK
3 in Kategorie D -> OK
Gesamt ausgewählt 13 -> OK
Kosten 49,9 -> OK
Von Gruppe 8 wurden 2 gewählt, von Gruppe 15 wurden 0 gewählt -> OK
von den anderen Gruppen nie mehr als 2 -> OK
Summe der Leistungswerte = 1310. Wer schafft mehr?
Viele Grüße
Graf Zahl
Code: Alles auswählen
ID;Kategorie;Gruppe;Leistung;Kosten
1001;D;1;172;11,94
1002;C;2;187;11,74
1003;C;1;105;10,1
1004;C;1;121;9,82
1005;C;1;112;9,24
1006;D;9;118;8,86
1007;D;5;117;8,74
1008;C;1;72;8,44
1009;C;8;56;8,12
1010;C;2;125;8
1011;C;1;30;7,8
1012;C;5;41;7,62
1013;D;7;146;7,42
1014;A;3;160;7,4
1015;C;1;88;7,36
1016;A;5;174;7,28
1017;D;2;102;7,04
1018;A;6;149;6,98
1019;D;8;123;6,96
1020;C;5;79;6,78
1021;C;8;97;6,74
1022;B;1;120;6,7
1023;C;1;70;6,7
1024;C;8;159;6,68
1025;C;2;81;6,62
1026;A;11;151;6,52
1027;D;3;145;6,5
1028;D;4;171;6,42
1029;A;7;120;6,4
1030;A;10;144;6,38
1031;A;1;92;6,34
1032;A;2;164;6,28
1033;C;3;64;6,28
1034;C;2;162;6,24
1035;D;4;102;6,24
1036;A;4;136;6,22
1037;C;1;90;6,2
1038;A;8;118;6,16
1039;B;1;90;6
1040;A;12;95;5,9
1041;A;9;124;5,88
1042;C;2;40;5,8
1043;D;4;160;5,8
1044;D;5;130;5,8
1045;C;7;79;5,78
1046;C;9;110;5,7
1047;B;1;52;5,54
1048;C;9;115;5,5
1049;D;12;-6;5,38
1050;D;3;104;5,28
1051;C;7;133;5,26
1052;C;1;52;5,24
1053;B;1;60;5,2
1054;D;5;30;5,2
1055;A;13;59;5,18
1056;D;6;121;5,12
1057;C;2;75;5,1
1058;C;5;80;5,1
1059;D;11;75;5,1
1060;B;8;83;5,06
1061;C;1;11;5,02
1062;B;1;47;4,94
1063;B;5;103;4,86
1064;D;14;73;4,86
1065;C;8;67;4,84
1066;C;8;65;4,8
1067;B;3;75;4,7
1068;B;2;72;4,64
1069;D;13;22;4,64
1070;D;3;22;4,64
1071;C;4;105;4,6
1072;C;5;79;4,58
1073;A;15;129;4,38
1074;C;11;69;4,38
1075;C;2;29;4,38
1076;B;2;77;4,34
1077;B;6;126;4,32
1078;D;6;53;4,26
1079;B;3;77;4,24
1080;C;8;92;4,24
1081;C;9;76;4,22
1082;C;10;76;4,22
1083;B;9;40;4,2
1084;C;9;78;4,16
1085;B;5;97;4,14
1086;C;14;37;4,14
1087;B;14;55;4,1
1088;D;9;89;4,08
1089;D;9;134;4,08
1090;B;4;101;4,02
1091;B;14;60;4
1092;B;2;60;4
1093;B;12;10;4
1094;C;2;20;4
1095;C;13;39;3,98
1096;B;4;78;3,96
1097;B;7;48;3,96
1098;B;13;5;3,9
1099;C;2;5;3,9
1100;C;3;45;3,9
1101;B;11;69;3,88
1102;C;3;34;3,88
1103;D;13;4;3,88
1104;B;6;68;3,86
1105;C;6;72;3,84
1106;C;12;22;3,84
1107;D;10;61;3,82
1108;B;8;50;3,8
1109;C;17;50;3,8
1110;D;15;20;3,8
1111;D;10;70;3,8
1112;B;5;39;3,78
1113;D;2;-2;3,76
1114;B;4;87;3,74
1115;B;10;57;3,74
1116;C;11;66;3,72
1117;B;7;58;3,66
1118;D;10;63;3,66
1119;B;11;60;3,6
1120;C;10;105;3,6
1121;D;15;50;3,6
1122;B;5;68;3,56
1123;C;12;58;3,56
1124;B;2;17;3,54
1125;B;5;76;3,52
1126;D;13;11;3,52
1127;B;3;65;3,5
1128;D;8;15;3,5
1129;B;2;49;3,48
1130;B;16;73;3,46
1131;C;10;73;3,46
1132;A;18;82;3,44
1133;B;10;32;3,44
1134;C;18;47;3,44
1135;C;9;32;3,44
1136;B;7;71;3,42
1137;C;3;81;3,42
1138;C;14;40;3,4
1139;C;5;19;3,38
1140;B;8;18;3,36
1141;B;9;7;3,34
1142;B;2;16;3,32
1143;C;3;91;3,32
1144;C;16;66;3,32
1145;C;9;5;3,3
1146;C;14;39;3,28
1147;C;14;64;3,28
1148;C;6;14;3,28
1149;D;11;74;3,28
1150;A;17;71;3,22
1151;B;6;70;3,2
1152;D;7;70;3,2
1153;B;9;69;3,18
1154;B;11;69;3,18
1155;C;6;59;3,18
1156;D;6;69;3,18
1157;C;4;58;3,16
1158;D;17;58;3,16
1159;B;13;14;3,08
1160;C;16;54;3,08
1161;C;12;-8;3,04
1162;A;16;60;3
1163;B;5;30;3
1164;B;10;10;3
1165;C;10;50;3
1166;B;18;39;2,98
1167;C;11;59;2,98
1168;C;1;13;2,96
1169;C;13;-2;2,96
1170;D;7;38;2,96
1171;D;9;58;2,96
1172;C;13;12;2,94
1173;C;12;7;2,94
1174;C;13;7;2,94
1175;C;13;-29;2,92
1176;B;4;20;2,9
1177;B;3;35;2,9
1178;C;4;35;2,9
1179;C;15;10;2,9
1180;C;13;44;2,88
1181;A;14;43;2,86
1182;B;1;33;2,86
1183;D;7;33;2,86
1184;D;16;68;2,86
1185;C;6;57;2,84
1186;D;12;22;2,84
1187;C;17;51;2,82
1188;D;11;21;2,82
1189;B;11;25;2,8
1190;C;11;40;2,8
1191;C;8;15;2,8
1192;A;4;9;2,78
1193;B;17;18;2,76
1194;C;1;6;2,72
1195;D;9;61;2,72
1196;C;10;50;2,7
1197;B;2;14;2,68
1198;C;17;24;2,68
1199;C;6;33;2,66
1200;C;14;53;2,66
1201;C;10;18;2,66
1202;B;5;31;2,62
1203;C;12;-4;2,62
1204;C;8;21;2,62
1205;C;3;71;2,62
1206;B;4;0;2,6
1207;B;5;20;2,6
1208;C;5;29;2,58
1209;C;7;29;2,58
1210;C;10;4;2,58
1211;C;9;4;2,58
1212;C;8;29;2,58
1213;C;4;39;2,58
1214;C;13;29;2,58
1215;C;10;38;2,56
1216;C;7;38;2,56
1217;C;13;18;2,56
1218;C;6;7;2,54
1219;D;7;2;2,54
1220;D;3;27;2,54
1221;B;15;-4;2,52
1222;B;8;-4;2,52
1223;C;5;1;2,52
1224;C;7;16;2,52
1225;C;13;1;2,52
1226;D;16;6;2,52
1227;B;17;35;2,5
1228;B;12;25;2,5
1229;B;8;0;2,5
1230;C;3;25;2,5
1231;D;18;15;2,5
1232;B;12;-12;2,46
1233;B;12;33;2,46
1234;B;16;37;2,44
1235;D;16;22;2,44
1236;B;7;31;2,42
1237;C;13;6;2,42
1238;D;4;21;2,42
1239;D;17;41;2,42
1240;A;17;0;2,4
1241;B;17;20;2,4
1242;B;17;19;2,38
1243;B;8;39;2,38
1244;C;12;4;2,38
1245;C;4;44;2,38
1246;C;18;9;2,38
1247;D;16;19;2,38
1248;D;5;19;2,38
1249;B;16;38;2,36
1250;B;6;8;2,36
1251;B;4;67;2,34
1252;C;12;-3;2,34
1253;C;6;27;2,34
1254;B;12;26;2,32
1255;B;10;31;2,32
1256;B;7;16;2,32
1257;B;16;36;2,32
1258;C;6;41;2,32
1259;B;18;5;2,3
1260;D;12;-5;2,3
1261;B;9;14;2,28
1262;C;16;24;2,28
1263;B;3;23;2,26
1264;B;6;23;2,26
1265;C;9;23;2,26
1266;B;12;-18;2,24
1267;B;18;11;2,22
1268;D;3;11;2,22
1269;B;12;10;2,2
1270;B;17;19;2,18
1271;B;16;29;2,18
1272;C;11;8;2,16
1273;C;14;8;2,16
1274;B;15;-3;2,14
1275;B;4;7;2,14
1276;B;12;-14;2,12
1277;B;18;6;2,12
1278;C;15;16;2,12
1279;C;17;30;2,1
1280;C;13;-15;2,1
1281;B;11;14;2,08
1282;A;18;13;2,06
1283;B;11;23;2,06
1284;C;17;28;2,06
1285;D;8;3;2,06
1286;D;15;-7;2,06
1287;C;15;2;2,04
1288;C;10;32;2,04
1289;D;3;2;2,04
1290;A;17;51;2,02
1291;C;9;0;2
1292;D;15;0;2
1293;C;16;19;1,98
1294;B;17;8;1,96
1295;B;2;58;1,96
1296;B;14;7;1,94
1297;C;17;5;1,9
1298;C;16;15;1,9
1299;A;2;4;1,88
1300;B;15;-16;1,88
1301;C;11;14;1,88
1302;C;17;14;1,88
1303;D;10;4;1,88
1304;D;17;19;1,88
1305;B;16;13;1,86
1306;B;6;8;1,86
1307;C;16;33;1,86
1308;B;10;12;1,84
1309;B;4;12;1,84
1310;C;14;42;1,84
1311;C;13;1;1,82
1312;A;16;0;1,8
1313;B;13;-11;1,78
1314;C;12;9;1,78
1315;C;4;14;1,78
1316;C;16;14;1,78
1317;C;5;8;1,76
1318;B;11;27;1,74
1319;B;6;2;1,74
1320;D;14;11;1,72
1321;B;9;35;1,7
1322;C;17;-6;1,68
1323;C;12;-16;1,68
1324;D;7;34;1,68
1325;D;18;-7;1,66
1326;B;10;22;1,64
1327;B;16;2;1,64
1328;D;11;2;1,64
1329;C;3;1;1,62
1330;C;15;-19;1,62
1331;B;2;0;1,6
1332;B;4;-10;1,6
1333;A;1;4;1,58
1334;B;16;4;1,58
1335;B;15;-11;1,58
1336;B;18;-1;1,58
1337;C;2;19;1,58
1338;D;14;29;1,58
1339;D;11;29;1,58
1340;D;13;-6;1,58
1341;C;13;-2;1,56
1342;B;4;2;1,54
1343;B;10;1;1,52
1344;B;16;0;1,5
1345;B;15;0;1,5
1346;B;8;-5;1,5
1347;C;15;-10;1,5
1348;C;18;0;1,5
1349;C;15;0;1,5
1350;C;5;0;1,5
1351;B;17;4;1,48
1352;B;13;-16;1,48
1353;C;18;-16;1,48
1354;B;14;-2;1,46
1355;C;4;13;1,46
1356;D;9;2;1,44
1357;C;14;-4;1,42
1358;D;18;-4;1,42
1359;C;18;0;1,4
1360;C;15;0;1,4
1361;C;11;-5;1,4
1362;D;14;0;1,4
1363;B;14;-17;1,36
1364;C;18;2;1,34
1365;C;15;-4;1,32
1366;B;15;-10;1,3
1367;B;15;-10;1,3
1368;D;7;40;1,3
1369;B;15;-11;1,28
1370;C;16;14;1,28
1371;B;12;-12;1,26
1372;C;16;3;1,26
1373;A;8;11;1,22
1374;B;15;1;1,22
1375;B;7;1;1,22
1376;C;17;36;1,22
1377;D;18;-19;1,22
1378;B;4;0;1,2
1379;C;18;0;1,2
1380;D;11;19;1,18
1381;C;18;-2;1,16
1382;C;6;33;1,16
1383;B;14;-3;1,14
1384;D;13;13;1,14
1385;A;14;44;1,08
1386;B;17;4;1,08
1387;B;10;-6;1,08
1388;A;10;13;1,06
1389;A;5;3;1,06
1390;B;6;3;1,06
1391;B;17;2;1,04
1392;A;13;26;1,02
1393;B;18;-34;1,02
1394;D;17;1;1,02
1395;D;4;1;1,02
1396;B;9;0;1
1397;B;4;0;1
1398;C;11;0;1
1399;D;17;0;1
1400;D;7;0;1
1401;D;8;0;1
1402;B;14;9;0,98
1403;D;18;9;0,98
1404;A;14;-2;0,96
1405;A;6;5;0,9
1406;C;15;-31;0,88
1407;C;15;3;0,86
1408;D;15;18;0,86
1409;A;17;0;0,8
1410;A;3;0;0,8
1411;B;7;0;0,8
1412;B;3;0;0,8
1413;C;14;0;0,8
1414;C;6;0;0,8
1415;D;3;0;0,8
1416;D;9;0;0,8
1417;A;11;0;0,7
1418;A;7;0;0,7
1419;A;5;0;0,7
1420;C;6;0;0,7
1421;C;15;3;0,66
1422;D;7;8;0,66
1423;C;10;1;0,62
1424;A;8;0;0,6
1425;A;9;0;0,6
1426;B;3;0;0,6
1427;B;6;0;0,6
1428;B;3;0;0,6
1429;B;5;0;0,6
1430;C;2;0;0,6
1431;C;10;5;0,6
1432;D;11;0;0,6
1433;D;12;0;0,6
1434;D;16;0;0,6
1435;D;6;4;0,58
1436;B;15;-3;0,54
1437;C;18;2;0,54
1438;B;14;1;0,52
1439;C;15;1;0,52
1440;D;18;-4;0,52
1441;A;12;0;0,5
1442;A;15;0;0,5
1443;B;13;0;0,5
1444;C;3;0;0,5
1445;C;7;0;0,5
1446;B;11;14;0,48
1447;C;18;3;0,48
1448;C;14;-6;0,48
1449;C;18;-7;0,46
1450;C;16;-2;0,46
1451;B;14;0;0,4
1452;B;7;0;0,4
1453;C;6;0;0,4
1454;C;10;0;0,4
1455;A;16;8;0,36
1456;C;18;-3;0,34
1457;B;10;1;0,32
1458;B;14;1;0,32
1459;A;12;0;0,3
1460;A;10;0;0,3
1461;B;7;0;0,3
1462;B;8;0;0,3
1463;C;9;0;0,3
1464;C;4;0;0,3
1465;C;12;0;0,3
1466;C;8;0;0,3
1467;A;7;3;0,26
1468;B;11;3;0,26
1469;B;9;1;0,22
1470;B;18;-4;0,22
1471;B;17;1;0,22
1472;B;14;1;0,22
1473;C;15;1;0,22
1474;A;11;0;0,2
1475;A;1;0;0,2
1476;A;10;0;0,2
1477;A;18;0;0,2
1478;A;5;0;0,2
1479;A;13;0;0,2
1480;A;14;0;0,2
1481;A;6;0;0,2
1482;A;3;0;0,2
1483;A;2;0;0,2
1484;A;10;0;0,2
1485;A;4;0;0,2
1486;A;15;0;0,2
1487;A;16;0;0,2
1488;A;4;0;0,2
1489;B;14;0;0,2
1490;B;4;0;0,2
1491;B;18;0;0,2
1492;B;16;0;0,2
1493;C;15;0;0,2
1494;C;4;0;0,2
1495;C;15;0;0,2
1496;C;16;0;0,2
1497;C;13;0;0,2
1498;C;17;0;0,2
1499;C;7;0;0,2
1500;C;14;0;0,2
1501;C;14;0;0,2
1502;D;15;0;0,2
1503;D;4;0;0,2
1504;D;4;0;0,2
1505;D;3;0;0,2
1506;B;3;-2;0,16
1507;D;17;-2;0,16
Zuletzt geändert von jogo am Di Mär 26, 2019 2:49 pm, insgesamt 1-mal geändert.
Grund: Formatierung verbessert.
Grund: Formatierung verbessert.
Re: Datensätze mit R auswählen ?
Hallo Herr Graf,
Was für eine Algorithmus steckt dahinter?
Gibt es Literatur zu dem verwendeten Algorithmus?
Hier noch ein konstruktiver Hinweis:
https://stats.stackexchange.com/search? ... onstraints
Vielleicht ist es ähnlich wie hier:
https://www.mathematik.hu-berlin.de/~ro ... ckBuch.pdf
Auf StackOverflow gelten Fragen nach der Übertragung einer Lösung von einer Programmiersprache in eine andere als off topic (too broad). Bis jetzt hast Du Deine bisherige Lösung nicht gezeigt.
Hast Du Dir schon das Optimization-TaskView angesehen? Dort gibt es einen Abschnitt mit der Überschrift Combinatorial Optimization.
Gruß, Jörg
so kommen wir der Sache schon näher.
als Anhang wäre es besser gewesen. Ich habe das mal so gemacht, so dass man jetzt die Datei einlesen kann mitIch habe unten mal die Basisdaten reinkopiert.
Code: Alles auswählen
d <- read.csv2("http://forum.r-statistik.de/download/file.php?id=466")
Was ist ein Excel Pivot Ergebnis?Mein Excel Pivot Ergebnis: ...
Was für eine Algorithmus steckt dahinter?
Gibt es Literatur zu dem verwendeten Algorithmus?
Bedeutet Deine Frage, dass Du Dir nicht sicher bist, ob dieses Ergebnis optimal ist?1 in Kategorie A -> OK
3 in Kategorie B -> OK
6 in Kategorie C -> OK
3 in Kategorie D -> OK
Gesamt ausgewählt 13 -> OK
Kosten 49,9 -> OK
Von Gruppe 8 wurden 2 gewählt, von Gruppe 15 wurden 0 gewählt -> OK
von den anderen Gruppen nie mehr als 2 -> OK
Summe der Leistungswerte = 1310. Wer schafft mehr?
Hier noch ein konstruktiver Hinweis:
https://stats.stackexchange.com/search? ... onstraints
Vielleicht ist es ähnlich wie hier:
https://www.mathematik.hu-berlin.de/~ro ... ckBuch.pdf
Auf StackOverflow gelten Fragen nach der Übertragung einer Lösung von einer Programmiersprache in eine andere als off topic (too broad). Bis jetzt hast Du Deine bisherige Lösung nicht gezeigt.
Hast Du Dir schon das Optimization-TaskView angesehen? Dort gibt es einen Abschnitt mit der Überschrift Combinatorial Optimization.
Gruß, Jörg
- Dateianhänge
-
- KFZ.csv
- (8.4 KiB) 24-mal heruntergeladen
Re: Datensätze mit R auswählen ?
Hallo Jogo,
Pivot ist eine Excelfunktion in der ich das Szanario durchlaufen lasse.
Ich kann nur sagen wie ich das baue. Ich habe in jeder Zeile ein Feld "auswahl" und damit rechne ich alle Zielwerte aus.
Beispiel:
Es gibt eine Formel über die Felder Auswahl (0 oder 1)
Es gibt eine Formel über Auswahl (0 der 1) multipliziert mit Preis
Es gibt eine Formel über Auswahl (0 oder 1) multipliziert mit Leistung
Dann kann ich Excel sagen was er machen darf (bei den Datensätzen Feld Auswahl 0 oder 1 einsetzen)
und welche Zielwerte getroffen werden müssen (Summe Auswahl = 13, Summe Preis < 50, Leistung = MAX)
und klicke auf start.....
Wie er das im Hintergrund macht, kann ich technisch nicht wiedergeben.
https://de.wikipedia.org/wiki/Pivotverfahren
https://de.wikipedia.org/wiki/Simplex-Verfahren
Das ist mir aber zu hoch, ich habe weder Mathe noch IT studiert
"Bedeutet Deine Frage, dass Du Dir nicht sicher bist, ob dieses Ergebnis optimal ist?"
Genau das ist der springende Punkt! Excel findet in wenigen Sekunden tolle Ergebnisse, aber manchmal finde ich durch Zufall bessere Ergebnisse und frage mich dann wie das sein kann.
Deswegen kam ich auf die Idee die Frage mal hier zu stellen.
Sowohl beide Links aus auch das Optimization-TaskView / Combinatorial Optimization verstehe ich leider auch nicht.
Wahrscheinlich ist das Thema ohne ohne Vorkenntnisse dann einfach zu hoch?
Gruß,
Graf Zahl
Pivot ist eine Excelfunktion in der ich das Szanario durchlaufen lasse.
Ich kann nur sagen wie ich das baue. Ich habe in jeder Zeile ein Feld "auswahl" und damit rechne ich alle Zielwerte aus.
Beispiel:
Es gibt eine Formel über die Felder Auswahl (0 oder 1)
Es gibt eine Formel über Auswahl (0 der 1) multipliziert mit Preis
Es gibt eine Formel über Auswahl (0 oder 1) multipliziert mit Leistung
Dann kann ich Excel sagen was er machen darf (bei den Datensätzen Feld Auswahl 0 oder 1 einsetzen)
und welche Zielwerte getroffen werden müssen (Summe Auswahl = 13, Summe Preis < 50, Leistung = MAX)
und klicke auf start.....
Wie er das im Hintergrund macht, kann ich technisch nicht wiedergeben.
https://de.wikipedia.org/wiki/Pivotverfahren
https://de.wikipedia.org/wiki/Simplex-Verfahren
Das ist mir aber zu hoch, ich habe weder Mathe noch IT studiert
"Bedeutet Deine Frage, dass Du Dir nicht sicher bist, ob dieses Ergebnis optimal ist?"
Genau das ist der springende Punkt! Excel findet in wenigen Sekunden tolle Ergebnisse, aber manchmal finde ich durch Zufall bessere Ergebnisse und frage mich dann wie das sein kann.
Deswegen kam ich auf die Idee die Frage mal hier zu stellen.
Sowohl beide Links aus auch das Optimization-TaskView / Combinatorial Optimization verstehe ich leider auch nicht.
Wahrscheinlich ist das Thema ohne ohne Vorkenntnisse dann einfach zu hoch?
Gruß,
Graf Zahl
Re: Datensätze mit R auswählen ?
Dann hast Du einen schönen Rabatt ausgehandelt!Kosten 49,9 -> OK
Bei mir kostet das Zeug 73.58 !
Re: Datensätze mit R auswählen ?
@Athomas Er hat mit Excel gerechnet. Das ist kein Rabatt, sondern zu akzeptierende Ungenauigkeit.
Wahrscheinlich wurde einer der Zwischenwerte erst als Datum interpretiert und dann nicht mit aufaddiert.
@grafZahl Ich kann Dein Problem nicht einfach lösen, ich denke aber, Du solltest Dir lp_solve anschauen. Das ist ein Solver, der für solche Probleme geeignet ist und mit dem Du nicht auf R festgelegt bist. lpsolve kann man mit R aber auch aus anderen Umfeldern nutzen.
http://web.mit.edu/lpsolve/doc/
http://web.mit.edu/lpsolve/doc/quicksta ... ck%20start
LG,
Bernhard
Wahrscheinlich wurde einer der Zwischenwerte erst als Datum interpretiert und dann nicht mit aufaddiert.
@grafZahl Ich kann Dein Problem nicht einfach lösen, ich denke aber, Du solltest Dir lp_solve anschauen. Das ist ein Solver, der für solche Probleme geeignet ist und mit dem Du nicht auf R festgelegt bist. lpsolve kann man mit R aber auch aus anderen Umfeldern nutzen.
http://web.mit.edu/lpsolve/doc/
http://web.mit.edu/lpsolve/doc/quicksta ... ck%20start
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Datensätze mit R auswählen ?
Hallo grafZahl,
für die Kreuztabellierung ...
Das Simplexverfahren ist aber ein Verfahren der linearen Optimierung.
Du hast es hier aber mit ganzzahliger Optimierung zu tun (oder kannst Du Dir auch ein drittel KFZ aussuchen?).
Ganzzahlige Optimierung ist um etliche Klassen härter als lineare Optimierung.
Mir fällt nicht mal auf Anhieb ein, wie ich Dein beschriebenes Problem formal darstellen kann.
Bernhard hat auch einen guten Gedanken geschrieben, wo rein rechnerisch ein Fehler liegen könnte.
Das geschilderte Problem ist interessant; es ist nicht trivial, aber es scheint lösbar.
Bei ganzzahliger Optimierung kenne ich nur die üblichen Binsenweisheiten - es ist keinesfalls mein Spezialgebiet.
Du wirst Dich mit Combinatorial Optimization beschäftigen müssen, denn genau darum geht es bei Deinem Problem.
Gruß, Jörg
den Begriff Pivot in Verbindung mit Excel kenne ich eigentlich nur als Synonym
für die Kreuztabellierung ...
... oder den Begriff Pivotschritt (auch Tausch der Basis) als ein Schritt im Simplexverfahren.Wie er das im Hintergrund macht, kann ich technisch nicht wiedergeben.
https://de.wikipedia.org/wiki/Pivotverfahren
https://de.wikipedia.org/wiki/Simplex-Verfahren
Das ist mir aber zu hoch, ich habe weder Mathe noch IT studiert
Das Simplexverfahren ist aber ein Verfahren der linearen Optimierung.
Du hast es hier aber mit ganzzahliger Optimierung zu tun (oder kannst Du Dir auch ein drittel KFZ aussuchen?).
Ganzzahlige Optimierung ist um etliche Klassen härter als lineare Optimierung.
Mir fällt nicht mal auf Anhieb ein, wie ich Dein beschriebenes Problem formal darstellen kann.
oha, das sollte Dich aber misstrauisch gegenüber der Lösung in Excel machen."Bedeutet Deine Frage, dass Du Dir nicht sicher bist, ob dieses Ergebnis optimal ist?"
Genau das ist der springende Punkt! Excel findet in wenigen Sekunden tolle Ergebnisse, aber manchmal finde ich durch Zufall bessere Ergebnisse und frage mich dann wie das sein kann.
Bernhard hat auch einen guten Gedanken geschrieben, wo rein rechnerisch ein Fehler liegen könnte.
Als Mathematiker kann ich nur sagen:Deswegen kam ich auf die Idee die Frage mal hier zu stellen.
Sowohl beide Links aus auch das Optimization-TaskView / Combinatorial Optimization verstehe ich leider auch nicht.
Wahrscheinlich ist das Thema ohne ohne Vorkenntnisse dann einfach zu hoch?
Das geschilderte Problem ist interessant; es ist nicht trivial, aber es scheint lösbar.
Bei ganzzahliger Optimierung kenne ich nur die üblichen Binsenweisheiten - es ist keinesfalls mein Spezialgebiet.
Du wirst Dich mit Combinatorial Optimization beschäftigen müssen, denn genau darum geht es bei Deinem Problem.
Gruß, Jörg
Re: Datensätze mit R auswählen ?
Hallo Jörg,
dann steige ich wohl aus und muss mit der Excel Lösung leben. Sicherlich recherchiere ich auch mal die Combinatorial Optimization, aber die ersten klicks sind mir alle "zu hoch". Zuviel englisch, zuviel mathe.
@Athomas
Oh ja stimmt, ich hatte das Szanaro für das Forum rasch neu gebaut und einen Formelfehler generiert.
Die beste Lösung von Excel lautet nun:
1024 1077 1080 1085 1089 1090 1120 1132 1137 1143 1154 1185 1195
und erreicht eine Leistung von 1255
@bigben Wenn Excel so schlecht ist, hast du denn ein besseres Ergebnis?
Dennoch danke für alle Kommentare und Hilfen!
dann steige ich wohl aus und muss mit der Excel Lösung leben. Sicherlich recherchiere ich auch mal die Combinatorial Optimization, aber die ersten klicks sind mir alle "zu hoch". Zuviel englisch, zuviel mathe.
@Athomas
Oh ja stimmt, ich hatte das Szanaro für das Forum rasch neu gebaut und einen Formelfehler generiert.
Die beste Lösung von Excel lautet nun:
1024 1077 1080 1085 1089 1090 1120 1132 1137 1143 1154 1185 1195
und erreicht eine Leistung von 1255
@bigben Wenn Excel so schlecht ist, hast du denn ein besseres Ergebnis?
Dennoch danke für alle Kommentare und Hilfen!