# Calculating weighted mean in data.frame

I'm working on this dataframe which mainly consists of the measurement AI which is an index describing the behavior of a political party (Fraktion in the df) during a vote (AffairTitle). Now, there was this fusion between the parties BDP & CVP to "Die Mitte" during the time which I'm investigating, so early records shows them separately while they are denoted together as Die Mitte for the later votes. Therefore I called named the variable "Fraktion_old" and added a new column "Fraktion" where I throughout call both "Die Mitte".

I'll use Fraktion for the analysis. My plan is to combine them by calculating a weighted mean based on the number of seats (Sum) each Fraktion had at a given vote (AffairTitle) and then deleting one of them which I don't know how to do yet. But for the weighted AI I came up with the following solution, which gives me the right numbers for the test2 dataframe:

``````test2 = data.frame(AffairTitle = rep(c("5G.","24h Beratungsangebot","Kirchengesetz"),3), Fraktion_old = c("BDP","BDP","BDP","CVP","CVP","CVP","SVP","SVP","SVP"),Fraktion = c("Die Mitte","Die Mitte","Die Mitte","Die Mitte","Die Mitte","Die Mitte","SVP","SVP","SVP"), AI = c(1,1,0.88,1,0.55,0.2,0.88,0.9,0.9), Sum = c(7,6,5,25,28,27,10,10,10))

test2\$AI_new <- ifelse(test2\$Fraktion == "Die Mitte" & test2\$Fraktion_old != "Die Mitte",
(test2\$Summe[test2\$Fraktion_old == "BDP" & test2\$AffairTitle == test2\$AffairTitle]*
test2\$AI[test2\$Fraktion_old == "BDP" & test2\$AffairTitle == test2\$AffairTitle] +
test2\$Summe[test2\$Fraktion_old == "CVP" & test2\$AffairTitle == test2\$AffairTitle]*
test2\$AI[test2\$Fraktion_old == "CVP" & test2\$AffairTitle == test2\$AffairTitle])/
(test2\$Summe[test2\$Fraktion_old == "BDP" & test2\$AffairTitle == test2\$AffairTitle] +
test2\$Summe[test2\$Fraktion_old == "CVP" & test2\$AffairTitle == test2\$AffairTitle]),
test2\$AI)
``````

But when I apply it to the actual data which is a bit more extensive (and with a change from AffairTitle to VoteRegistrationNumber as identification of a unique vote) regarding the variable levels (AI_new should be the same for BDP and CVP in the same vote):

``````Master_df_sum = structure(list(AffairTitle = c("24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019"
), Fraktion = c("Die Mitte", "Die Mitte", "FDP", "FDP", "GLP",
"GLP", "Grüne", "Grüne", "SP", "SP", "SVP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP",
"FDP", "FDP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP",
"GLP", "GLP", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne",
"Grüne", "Grüne", "Grüne", "Grüne", "SP", "SP", "SP", "SP",
"SP", "SP", "SP", "SP", "SP", "SVP", "SVP", "SVP", "SVP", "SVP",
"SVP", "SVP"), Fraktion_old = c("Die Mitte", "Die Mitte", "FDP",
"FDP", "GLP", "GLP", "Grüne", "Grüne", "SP", "SP", "SVP", "SVP",
"BDP", "CVP", "FDP", "GLP", "Grüne", "SP", "SVP", "BDP", "CVP",
"FDP", "GLP", "Grüne", "SP", "SVP", "BDP", "CVP", "FDP", "GLP",
"Grüne", "SP", "SVP", "Die Mitte", "FDP", "GLP", "Grüne", "SP",
"SVP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP",
"BDP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP",
"CVP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP",
"FDP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP",
"GLP", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne",
"Grüne", "Grüne", "Grüne", "SP", "SP", "SP", "SP", "SP", "SP",
"SP", "SP", "SP", "SVP", "SVP", "SVP", "SVP", "SVP", "SVP", "SVP"
), VoteRegistrationNumber = c("22902", "22903", "22902", "22903",
"22902", "22903", "22902", "22903", "22902", "22903", "22902",
"22903", "18604", "18604", "18604", "18604", "18604", "18604",
"18604", "18761", "18761", "18761", "18761", "18761", "18761",
"18761", "18647", "18647", "18647", "18647", "18647", "18647",
"18647", "22761", "22761", "22761", "22761", "22761", "22761",
"18295", "18296", "18297", "18298", "18299", "18300", "18301",
"18302", "18303", "18295", "18296", "18297", "18298", "18299",
"18300", "18301", "18302", "18303", "18295", "18296", "18297",
"18298", "18299", "18300", "18301", "18302", "18303", "18295",
"18296", "18297", "18298", "18299", "18300", "18301", "18302",
"18303", "18295", "18296", "18297", "18298", "18299", "18300",
"18301", "18302", "18303", "18295", "18296", "18297", "18298",
"18299", "18300", "18301", "18302", "18303", "18295", "18296",
"18297", "18298", "18299", "18300", "18301"), Session_new = c("2021S2",
"2021S2", "2021S2", "2021S2", "2021S2", "2021S2", "2021S2", "2021S2",
"2021S2", "2021S2", "2021S2", "2021S2", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S2", "2019S2", "2019S2",
"2019S2", "2019S2", "2019S2", "2019S2", "2019S2", "2019S2", "2019S2",
"2019S2", "2019S2", "2019S2", "2019S2", "2021S1", "2021S1", "2021S1",
"2021S1", "2021S1", "2021S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1", "2019S1",
"2019S1"), Yes = c(25, 25, 24, 24, 15, 15, 27, 27, 34, 36, 0,
0, 7, 30, 31, 7, 0, 42, 1, 5, 28, 6, 0, 0, 0, 63, 6, 26, 27,
6, 12, 41, 18, 31, 29, 14, 28, 38, 53, 7, 7, 7, 6, 6, 7, 7, 6,
6, 28, 28, 28, 24, 28, 28, 28, 27, 27, 32, 32, 32, 31, 32, 31,
31, 31, 31, 3, 0, 2, 0, 2, 3, 3, 3, 3, 12, 0, 10, 0, 12, 11,
12, 12, 12, 42, 0, 41, 3, 41, 41, 41, 41, 41, 65, 65, 65, 64,
64, 64, 64), No = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 51, 0,
0, 0, 0, 12, 0, 66, 0, 0, 18, 5, 10, 41, 0, 0, 4, 3, 0, 0, 0,
45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 3,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 5, 0, 5, 2, 2, 2,
2, 2, 0, 11, 0, 12, 0, 0, 0, 0, 0, 0, 41, 0, 36, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0), Abstain = c(0, 0, 2, 2, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2,
0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 1,
0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0), Max = c(25, 25, 24, 24, 15, 15, 27,
27, 34, 36, 51, 51, 7, 30, 31, 7, 12, 42, 66, 5, 28, 18, 5, 10,
41, 63, 6, 26, 27, 6, 12, 41, 45, 31, 29, 14, 28, 38, 53, 7,
7, 7, 6, 6, 7, 7, 6, 6, 28, 28, 28, 24, 28, 28, 28, 27, 27, 32,
32, 32, 31, 32, 31, 31, 31, 31, 3, 5, 3, 5, 2, 3, 3, 3, 3, 12,
11, 10, 12, 12, 11, 12, 12, 12, 42, 41, 41, 36, 41, 41, 41, 41,
41, 65, 65, 65, 64, 64, 64, 64), Sum = c(25, 25, 26, 26, 15,
15, 27, 27, 34, 36, 52, 52, 7, 30, 31, 7, 12, 42, 67, 5, 28,
25, 5, 10, 41, 63, 6, 30, 32, 6, 12, 41, 64, 31, 29, 14, 29,
38, 54, 7, 7, 7, 6, 6, 7, 7, 7, 7, 28, 28, 28, 28, 28, 28, 28,
28, 28, 32, 32, 32, 32, 32, 32, 32, 32, 32, 5, 5, 5, 5, 5, 5,
5, 5, 5, 12, 11, 12, 12, 12, 12, 12, 12, 12, 43, 42, 42, 41,
41, 42, 42, 42, 42, 65, 65, 65, 64, 64, 64, 64), AI = c(1, 1,
0.884615384615385, 0.884615384615385, 1, 1, 1, 1, 1, 1, 0.971153846153846,
0.971153846153846, 1, 1, 1, 1, 1, 1, 0.977611940298508, 1, 1,
0.58, 1, 1, 1, 1, 1, 0.8, 0.765625, 1, 1, 1, 0.5546875, 1, 1,
1, 0.948275862068966, 1, 0.972222222222222, 1, 1, 1, 1, 1, 1,
1, 0.785714285714286, 0.785714285714286, 1, 1, 1, 0.785714285714286,
1, 1, 1, 0.946428571428571, 0.946428571428571, 1, 1, 1, 0.953125,
1, 0.953125, 0.953125, 0.953125, 0.953125, 0.4, 1, 0.4, 1, 0.1,
0.4, 0.4, 0.4, 0.4, 1, 1, 0.75, 1, 1, 0.875, 1, 1, 1, 0.965116279069767,
0.964285714285714, 0.964285714285714, 0.817073170731707, 1, 0.964285714285714,
0.964285714285714, 0.964285714285714, 0.964285714285714, 1, 1,
1, 1, 1, 1, 1)), class = c("grouped_df", "tbl_df", "tbl", "data.frame"
), row.names = c(NA, -100L), groups = structure(list(AffairTitle = c("24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"24-Stunden-Beratungsangebot für von Gewalt betroffene Personen gemäss Istanbul-Konvention",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abkommen zwischen der Schweiz und der EU über die Verknüpfung der Emissionshandelssysteme. Genehmigung und Umsetzung (Änderung des CO2-Gesetzes)",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung der Heiratsstrafe",
"Abschaffung der Heiratsstrafe", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Abschaffung von NFA-Fehlanreizen", "Abschaffung von NFA-Fehlanreizen",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Administrative Erleichterungen und Entlastung des Bundeshaushalts. Bundesgesetz",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019",
"Agglomerationsverkehr. Verpflichtungskredite für die Beiträge ab 2019"
), Fraktion = c("Die Mitte", "Die Mitte", "FDP", "FDP", "GLP",
"GLP", "Grüne", "Grüne", "SP", "SP", "SVP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"Die Mitte", "FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte",
"FDP", "GLP", "Grüne", "SP", "SVP", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte",
"Die Mitte", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP",
"FDP", "FDP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP",
"GLP", "GLP", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne",
"Grüne", "Grüne", "Grüne", "Grüne", "SP", "SP", "SP", "SP",
"SP", "SP", "SP", "SP", "SP", "SVP", "SVP", "SVP", "SVP", "SVP",
"SVP", "SVP"), Fraktion_old = c("Die Mitte", "Die Mitte", "FDP",
"FDP", "GLP", "GLP", "Grüne", "Grüne", "SP", "SP", "SVP", "SVP",
"BDP", "CVP", "FDP", "GLP", "Grüne", "SP", "SVP", "BDP", "CVP",
"FDP", "GLP", "Grüne", "SP", "SVP", "BDP", "CVP", "FDP", "GLP",
"Grüne", "SP", "SVP", "Die Mitte", "FDP", "GLP", "Grüne", "SP",
"SVP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP", "BDP",
"BDP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP", "CVP",
"CVP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP", "FDP",
"FDP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP", "GLP",
"GLP", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne", "Grüne",
"Grüne", "Grüne", "Grüne", "SP", "SP", "SP", "SP", "SP", "SP",
"SP", "SP", "SP", "SVP", "SVP", "SVP", "SVP", "SVP", "SVP", "SVP"
), VoteRegistrationNumber = c("22902", "22903", "22902", "22903",
"22902", "22903", "22902", "22903", "22902", "22903", "22902",
"22903", "18604", "18604", "18604", "18604", "18604", "18604",
"18604", "18761", "18761", "18761", "18761", "18761", "18761",
"18761", "18647", "18647", "18647", "18647", "18647", "18647",
"18647", "22761", "22761", "22761", "22761", "22761", "22761",
"18295", "18296", "18297", "18298", "18299", "18300", "18301",
"18302", "18303", "18295", "18296", "18297", "18298", "18299",
"18300", "18301", "18302", "18303", "18295", "18296", "18297",
"18298", "18299", "18300", "18301", "18302", "18303", "18295",
"18296", "18297", "18298", "18299", "18300", "18301", "18302",
"18303", "18295", "18296", "18297", "18298", "18299", "18300",
"18301", "18302", "18303", "18295", "18296", "18297", "18298",
"18299", "18300", "18301", "18302", "18303", "18295", "18296",
"18297", "18298", "18299", "18300", "18301"), .rows = structure(list(
1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L,
15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L,
27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L,
39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L,
51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 62L,
63L, 64L, 65L, 66L, 67L, 68L, 69L, 70L, 71L, 72L, 73L, 74L,
75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L, 85L, 86L,
87L, 88L, 89L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L, 98L,
99L, 100L), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -100L), .drop = TRUE), na.action = structure(c(`4338` = 4338L,
`4419` = 4419L, `5292` = 5292L, `5349` = 5349L, `5406` = 5406L,
`5463` = 5463L, `5520` = 5520L, `7843` = 7843L, `8117` = 8117L,
`8118` = 8118L, `8119` = 8119L, `8120` = 8120L, `8121` = 8121L,
`8122` = 8122L, `9445` = 9445L, `9446` = 9446L, `9447` = 9447L,
`9448` = 9448L, `9449` = 9449L, `9450` = 9450L, `12948` = 12948L,
`12949` = 12949L, `12950` = 12950L, `12951` = 12951L, `12952` = 12952L,
`12953` = 12953L, `13523` = 13523L, `13524` = 13524L, `13525` = 13525L,
`13526` = 13526L, `13527` = 13527L, `13528` = 13528L, `17011` = 17011L,
`17032` = 17032L, `17053` = 17053L, `17074` = 17074L, `17095` = 17095L,
`17116` = 17116L, `17542` = 17542L, `17544` = 17544L, `17546` = 17546L,
`17548` = 17548L, `17550` = 17550L, `17552` = 17552L, `20624` = 20624L,
`20625` = 20625L, `20626` = 20626L, `20627` = 20627L, `20628` = 20628L,
`20629` = 20629L, `20630` = 20630L, `20798` = 20798L, `20810` = 20810L,
`20816` = 20816L, `24193` = 24193L, `24204` = 24204L, `24215` = 24215L,
`24226` = 24226L, `24237` = 24237L, `24248` = 24248L, `25055` = 25055L,
`25056` = 25056L, `25057` = 25057L, `25058` = 25058L, `25059` = 25059L,
`25060` = 25060L, `25086` = 25086L, `25087` = 25087L, `25088` = 25088L,
`25089` = 25089L, `25090` = 25090L, `25091` = 25091L, `25092` = 25092L
), class = "omit"))
``````

Any idea where the issue might lie?

I think you can greatly improve your code.
approx half of it is redundant and does nothing for no purpose...
because TRUE & TRUE along with FALSE & TRUE both evaluate to TRUE and FALSE respectively, the `& TRUE` part can be said to have no effect
Your code has many of `& test2\$AffairTitle == test2\$AffairTitle`
where you test if a thing is itself ; which is TRUE

``````test2\$AI_new <- ifelse(test2\$Fraktion == "Die Mitte" &
test2\$Fraktion_old != "Die Mitte",
(test2\$Summe[test2\$Fraktion_old == "BDP"] *
test2\$AI[test2\$Fraktion_old == "BDP"] +
test2\$Summe[test2\$Fraktion_old == "CVP"] *
test2\$AI[test2\$Fraktion_old == "CVP"]) /
(test2\$Summe[test2\$Fraktion_old == "BDP"] +
test2\$Summe[test2\$Fraktion_old == "CVP"]),
test2\$AI
)
``````

I encountered the issue that it seems you have a type where instead of Sum you have Summe in your code. Sum is shorter so will try with that.
...
I think this is a good alternative

``````test3 <- test2 <- data.frame(AffairTitle = rep(c("5G.", "24h Beratungsangebot", "Kirchengesetz"), 3), Fraktion_old = c("BDP", "BDP", "BDP", "CVP", "CVP", "CVP", "SVP", "SVP", "SVP"), Fraktion = c("Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "Die Mitte", "SVP", "SVP", "SVP"), AI = c(1, 1, 0.88, 1, 0.55, 0.2, 0.88, 0.9, 0.9), Sum = c(7, 6, 5, 25, 28, 27, 10, 10, 10))

test2\$AI_new <- ifelse(test2\$Fraktion == "Die Mitte" &
test2\$Fraktion_old != "Die Mitte",
(test2\$Sum[test2\$Fraktion_old == "BDP"] *
test2\$AI[test2\$Fraktion_old == "BDP"] +
test2\$Sum[test2\$Fraktion_old == "CVP"] *
test2\$AI[test2\$Fraktion_old == "CVP"]) /
(test2\$Sum[test2\$Fraktion_old == "BDP"] +
test2\$Sum[test2\$Fraktion_old == "CVP"]),
test2\$AI
)

library(dplyr)
test3 <- test3 |> group_by(AffairTitle,
DM= (Fraktion =="Die Mitte" &
Fraktion_old != "Die Mitte")) |>
mutate(AI_new = if_else(DM,
sum(AI*Sum)/sum(Sum),
AI)) |> ungroup() |> select(-DM)
# showing that test3 has same contents as test2 , with friendlier syntax ?
identical(test2,data.frame(test3))``````

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.