Search code examples
rdataframematrixdata-wrangling

How to produce matrix using dataframe row values


I have a dataframe that looks like this:

name session sessionvote voter response
Tim 116 1 Y
Tim 116 2 N
Tim 117 1 Y
Tim 117 2 Y
Dave 117 1 N
Dave 117 2 Y
Larry 116 1 Y
Larry 116 2 Y
Larry 117 1 Y
John 117 1 N

name refers to the subjects, session refers to the meeting (in which multiple votes can be held), sessionvote refers to the ID or vote number for that session, and voter response refers to the subjects' vote on that specific session vote.

I want to compute a similarity score for between each pair of users, based on their vote similarity, using only the data from votes they both were present for. The similarity score should be computed like this (# of same vote response/# of votes both subjects were present for). For example, Tim and Larry were both present for three of the same votes (116-1, 116-2, 117-1), their responses were the same for two of those votes (116-1, 117-1), but differed for the third vote they both were present for (116-2). To compute their score, it would be 2 (# of Tim and Larry's shared responses)/3 (number of votes both Tim and Larry were present for), giving them a .66 similarity score.

I believe the simplest way to do this would be to produce a matrix that looks something like this:

Tim Dave Larry John
Tim 1 .5 .66 0
Dave .5 1 0 1
Larry .66 0 1 0
John 0 1 0 1

Though I can conceptualize what I want it to look like, I'm not sure how to turn this dataframe into a matrix based on these rows. Any help would be greatly appreciated.

UPDATE: I have included the dput output below. This is a subset of the data I am trying to use. The full dataset is much larger.

structure(list(name = c("YOUNG, Donald Edwin", "SENSENBRENNER, Frank James, Jr.", 
"ROGERS, Harold Dallas (Hal)", "SMITH, Christopher Henry", "HOYER, Steny Hamilton", 
"KAPTUR, Marcia Carolyn (Marcy)", "VISCLOSKY, Peter", "DeFAZIO, Peter Anthony", 
"LEWIS, John R.", "PRICE, David Eugene", "UPTON, Frederick Stephen", 
"PELOSI, Nancy", "PALLONE, Frank, Jr.", "ENGEL, Eliot Lance", 
"LOWEY, Nita M.", "NEAL, Richard Edmund", "SCHIFF, Adam", "DAVIS, Susan A.", 
"LYNCH, Stephen F.", "McCOLLUM, Betty", "GRAVES, Samuel", "LANGEVIN, James", 
"WILSON, Addison Graves (Joe)", "LARSEN, Richard Ray (Rick)", 
"CLAY, William Lacy, Jr.", "ROGERS, Mike Dennis", "GRIJALVA, Raúl M.", 
"NUNES, Devin", "SÁNCHEZ, Linda T.", "DIAZ-BALART, Mario", "SCOTT, David", 
"CASE, Ed", "KING, Steve", "RUPPERSBERGER, C. A. (Dutch)", "BUTTERFIELD, George Kenneth, Jr. (G.K.)", 
"TURNER, Michael R.", "RYAN, Timothy J.", "COLE, Tom", "BURGESS, Michael C.", 
"CARTER, John R.", "BISHOP, Robert (Rob)", "COSTA, Jim", "WASSERMAN SCHULTZ, Debbie", 
"LIPINSKI, Daniel", "CLEAVER, Emanuel, II", "FORTENBERRY, Jeff", 
"HIGGINS, Brian", "FOXX, Virginia Ann", "McHENRY, Patrick T.", 
"GOHMERT, Louie", "GREEN, Al", "McCAUL, Michael T.", "CONAWAY, K. Michael", 
"MARCHANT, Kenny", "CUELLAR, Henry", "McMORRIS RODGERS, Cathy", 
"MOORE, Gwendolynne S. (Gwen)", "MATSUI, Doris", "SIRES, Albio", 
"McNERNEY, Jerry", "MCCARTHY, Kevin", "LAMBORN, Doug", "PERLMUTTER, Ed", 
"COURTNEY, Joe", "CASTOR, Kathy", "BUCHANAN, Vernon G.", "JOHNSON, Hank", 
"LOEBSACK, Dave", "YARMUTH, John", "SARBANES, John", "WALBERG, Tim", 
"SMITH, Adrian", "CLARKE, Yvette Diane", "JORDAN, Jim", "COHEN, Stephen", 
"FOSTER, Bill", "WELCH, Peter", "LATTA, Robert E.", "WITTMAN, Robert J.", 
"CARSON, André", "BILIRAKIS, Gus", "SCALISE, Steve", "SPEIER, Karen Lorraine Jacqueline (Jackie)", 
"KIRKPATRICK, Ann", "McCLINTOCK, Tom", "HIMES, James A.", "POSEY, Bill", 
"GUTHRIE, Brett", "PINGREE, Chellie", "LUETKEMEYER, Blaine", 
"TITUS, Alice (Dina)", "LUJÁN, Ben Ray", "TONKO, Paul", "FUDGE, Marcia L.", 
"SCHRADER, Kurt", "THOMPSON, Glenn", "ROE, David P. (Phil)", 
"OLSON, Pete", "CONNOLLY, Gerald E. (Gerry)", "QUIGLEY, Mike", 
"CHU, Judy", "GARAMENDI, John", "DEUTCH, Theodore E. (Ted)", 
"GRAVES, Tom", "HUNTER, Duncan Duane", "REED, Thomas W. II", 
"SEWELL, Terri", "GOSAR, Paul", "SCHWEIKERT, David", "CRAWFORD, Rick", 
"WOMACK, Steve", "BASS, Karen", "TIPTON, Scott", "WEBSTER, Daniel A.", 
"WILSON, Frederica", "WOODALL, Rob", "SCOTT, Austin", "KINZINGER, Adam", 
"BUCSHON, Larry", "RICHMOND, Cedric", "HARRIS, Andy", "KEATING, William R.", 
"HUIZENGA, Bill", "AMASH, Justin", "PALAZZO, Steven", "HARTZLER, Vicky", 
"LONG, Billy", "JOHNSON, Bill", "STIVERS, Steve", "GIBBS, Bob", 
"KELLY, Mike", "MARINO, Thomas A.", "CICILLINE, David N.", "DUNCAN, Jeff", 
"FLEISCHMANN, Chuck", "DESJARLAIS, Scott", "FLORES, Bill", "HERRERA BEUTLER, Jaime", 
"McKINLEY, David", "DUFFY, Sean", "GRIFFITH, H. Morgan", "ROBY, Martha", 
"BROOKS, Mo", "AMODEI, Mark E.", "BONAMICI, Suzanne", "LaMALFA, Doug", 
"HUFFMAN, Jared", "BERA, Ami", "COOK, Paul", "SWALWELL, Eric", 
"BROWNLEY, Julia", "CÁRDENAS, Tony", "RUIZ, Raul", "TAKANO, Mark", 
"LOWENTHAL, Alan", "VARGAS, Juan", "PETERS, Scott", "YOHO, Ted", 
"FRANKEL, Lois", "COLLINS, Doug", "GABBARD, Tulsi", "SCHNEIDER, Brad", 
"DAVIS, Rodney", "BUSTOS, Cheri", "WALORSKI, Jackie", "BROOKS, Susan", 
"BARR, Garland H. (Andy) IV", "KENNEDY, Joseph P. III", "WAGNER, Ann", 
"HORSFORD, Steven", "KUSTER, Ann McLane", "MENG, Grace", "JEFFRIES, Hakeem", 
"MALONEY, Sean Patrick", "COLLINS, Chris", "HUDSON, Richard", 
"MEADOWS, Mark", "HOLDING, George E.B.", "WENSTRUP, Brad", "BEATTY, Joyce", 
"JOYCE, David", "MULLIN, Markwayne", "PERRY, Scott", "CARTWRIGHT, Matt", 
"RICE, Tom", "WEBER, Randy", "CASTRO, Joaquin", "WILLIAMS, Roger", 
"VEASEY, Marc", "VELA, Filemon", "STEWART, Chris", "KILMER, Derek", 
"HECK, Denny", "POCAN, Mark", "KELLY, Robin L.", "KILDEE, Dan", 
"SMITH, Jason", "CLARK, Katherine M.", "BYRNE, Bradley", "PALMER, Gary James", 
"GALLEGO, Ruben", "HILL, French", "DESAULNIER, Mark James", "AGUILAR, Peter Rey", 
"LIEU, Ted", "TORRES, Norma Judith", "BUCK, Kenneth Robert", 
"CARTER, Buddy", "HICE, Jody Brownlow", "LOUDERMILK, Barry D.", 
"ALLEN, Rick W.", "BOST, Mike", "ABRAHAM, Ralph", "GRAVES, Garret", 
"MOULTON, Seth", "MOOLENAAR, John", "DINGELL, Debbie", "LAWRENCE, Brenda L", 
"EMMER, Thomas Earl II", "NORCROSS, Donald", "WATSON COLEMAN, Bonnie", 
"ZELDIN, Lee M", "RICE, Kathleen Maura", "STEFANIK, Elise M", 
"KATKO, John", "WALKER, Bradley Mark", "ROUZER, David", "ADAMS, Alma", 
"BOYLE, Brendan Francis", "RATCLIFFE, John", "HURD, William Ballard", 
"BABIN, Brian", "BEYER, Donald Sternoff Jr.", "NEWHOUSE, Daniel Milton", 
"MOONEY, Alex X.", "GROTHMAN, Glenn", "KELLY, Trent", "LaHOOD, Darin", 
"WESTERMAN, Bruce Eugene", "DAVIDSON, Warren", "COMER, James", 
"EVANS, Dwight", "ARRINGTON, Jodey Cook", "BACON, Donald J.", 
"BANKS, James E.", "BARRAGÁN, Nanette Diaz", "BERGMAN, John", 
"BIGGS, Andrew S.", "BLUNT ROCHESTER, Lisa", "BROWN, Anthony Gregory", 
"BUDD, Theodore Paul", "CARBAJAL, Salud", "CHENEY, Liz", "CORREA, Jose Luis", 
"CRIST, Charlie Joseph Jr.", "DEMINGS, Valdez Butler", "DUNN, Neal Patrick", 
"ESPAILLAT, Adriano J.", "FERGUSON, Anderson Drew IV", "FITZPATRICK, Brian K.", 
"GAETZ, Matthew L. II", "GALLAGHER, Michael", "GONZALEZ, Vicente Jr.", 
"GOTTHEIMER, Josh S.", "HIGGINS, Clay", "HOLLINGSWORTH, Joseph Albert III", 
"JAYAPAL, Pramila", "JOHNSON, Mike", "KHANNA, Rohit", "KRISHNAMOORTHI, S. Raja", 
"KUSTOFF, David", "LAWSON, Alfred Jr.", "MARSHALL, Roger Wayne", 
"MAST, Brian Jeffery", "MCEACHIN, Aston Donald", "MITCHELL, Paul", 
"MURPHY, Stephanie", "O'HALLERAN, Thomas C.", "PANETTA, James Varni", 
"RASKIN, Jamie Ben", "ROONEY, Francis", "RUTHERFORD, John Henry", 
"SMUCKER, Lloyd K.", "SOTO, Darren Michael", "SUOZZI, Thomas", 
"ESTES, Ron", "GIANFORTE, Greg", "NORMAN, Ralph", "GOMEZ, Jimmy", 
"CURTIS, John R.", "LAMB, Conor", "LESKO, Debbie", "CLOUD, Michael", 
"BALDERSON, Troy", "HERN, Kevin", "MORELLE, Joseph D.", "SCANLON, Mary Gay", 
"WILD, Susan", "ALLRED, Colin", "ARMSTRONG, Kelly", "AXNE, Cynthia", 
"BAIRD, James", "BRINDISI, Anthony", "BURCHETT, Timothy", "CASTEN, Sean", 
"CISNEROS, Gil", "CLINE, Benjamin", "COX, TJ", "CRAIG, Angela", 
"CRENSHAW, Daniel", "CROW, Jason", "CUNNINGHAM, Joe", "DAVIDS, Sharice", 
"DEAN, Madeleine", "DELGADO, Antonio", "ESCOBAR, Veronica", "FINKENAUER, Abby", 
"FLETCHER, Elizabeth", "FULCHER, Russell", "GARCÍA, Jesús", 
"GARCIA, Sylvia", "GOLDEN, Jared", "GONZALEZ, Anthony", "GOODEN, Lance", 
"GREEN, Mark", "GUEST, Michael", "HAALAND, Debra", "HAGEDORN, Jim", 
"HARDER, Josh", "HAYES, Jahana", "HILL, Katie", "HORN, Kendra", 
"HOULAHAN, Christina", "JOHNSON, Dustin", "JOYCE, John", "KIM, Andy", 
"LEE, Susie", "LEVIN, Mike", "LEVIN, Andy", "LURIA, Elaine", 
"MALINOWSKI, Tomaz", "McADAMS, Ben", "McBATH, Lucy", "MEUSER, Dan", 
"MILLER, Carol", "MUCARSEL-POWELL, Debbie", "NEGUSE, Joseph", 
"OCASIO-CORTEZ, Alexandria", "OMAR, Ilhan", "PAPPAS, Chris", 
"PENCE, Gregory", "PHILLIPS, Dean", "PORTER, Katie", "PRESSLEY, Ayanna", 
"RESCHENTHALER, Guy", "RIGGLEMAN, Denver", "ROSE, Max", "ROSE, John", 
"ROUDA, Harley", "ROY, Charles", "SCHRIER, Kim", "SHALALA, Donna", 
"SHERRILL, Mikie", "SPANBERGER, Abigail", "SPANO, Ross", "STANTON, Greg", 
"STAUBER, Peter", "STEIL, Bryan", "STEUBE, William", "STEVENS, Haley", 
"TAYLOR, Nicholas", "TIMMONS, William", "TLAIB, Rashida", "TORRES SMALL, Xochitl", 
"TRAHAN, Lori", "TRONE, David", "UNDERWOOD, Lauren", "WALTZ, Michael", 
"WATKINS, Steve", "WEXTON, Jennifer", "WRIGHT, Ron", "WATERS, Maxine", 
"DeLAURO, Rosa L.", "PETERSON, Collin Clark", "SERRANO, José E.", 
"ESHOO, Anna Georges", "ROYBAL-ALLARD, Lucille", "CALVERT, Ken", 
"HASTINGS, Alcee Lamar", "BISHOP, Sanford Dixon, Jr.", "RUSH, Bobby L.", 
"THOMPSON, Bennie", "KING, Peter T.", "NADLER, Jerrold Lewis", 
"VELÁZQUEZ, Nydia M.", "MALONEY, Carolyn Bosher", "LUCAS, Frank D.", 
"LOFGREN, Zoe", "CHABOT, Steve", "DOYLE, Michael F.", "DOGGETT, Lloyd Alton, II", 
"THORNBERRY, William McClellan (Mac)", "JACKSON LEE, Sheila", 
"CUMMINGS, Elijah Eugene", "BLUMENAUER, Earl", "ADERHOLT, Robert", 
"SHERMAN, Brad", "DeGETTE, Diana", "DAVIS, Danny K.", "SHIMKUS, John M.", 
"McGOVERN, James P.", "PASCRELL, William J., Jr.", "BRADY, Kevin Patrick", 
"GRANGER, Kay", "SMITH, Adam", "KIND, Ron", "MEEKS, Gregory W.", 
"LEE, Barbara", "THOMPSON, Michael", "NAPOLITANO, Grace Flores", 
"LARSON, John B.", "SIMPSON, Michael K.", "SCHAKOWSKY, Janice D.", 
"WALDEN, Greg", "DelBENE, Suzan K.", "MASSIE, Thomas", "PAYNE, Donald, Jr.", 
"CLYBURN, James Enos", "JOHNSON, Eddie Bernice", "SCOTT, Robert C.", 
"YOUNG, Donald Edwin", "SENSENBRENNER, Frank James, Jr.", "ROGERS, Harold Dallas (Hal)", 
"SMITH, Christopher Henry", "HOYER, Steny Hamilton", "COOPER, James Hayes Shofner", 
"KAPTUR, Marcia Carolyn (Marcy)", "VISCLOSKY, Peter", "DeFAZIO, Peter Anthony", 
"LEWIS, John R.", "PRICE, David Eugene", "UPTON, Frederick Stephen", 
"PALLONE, Frank, Jr.", "ENGEL, Eliot Lance", "LOWEY, Nita M.", 
"NEAL, Richard Edmund", "SCHIFF, Adam", "DAVIS, Susan A.", "LYNCH, Stephen F.", 
"McCOLLUM, Betty", "GRAVES, Samuel", "LANGEVIN, James", "WILSON, Addison Graves (Joe)", 
"LARSEN, Richard Ray (Rick)", "CLAY, William Lacy, Jr.", "ROGERS, Mike Dennis", 
"GRIJALVA, Raúl M.", "NUNES, Devin", "SÁNCHEZ, Linda T.", "DIAZ-BALART, Mario", 
"SCOTT, David", "CASE, Ed", "KING, Steve", "RUPPERSBERGER, C. A. (Dutch)", 
"BUTTERFIELD, George Kenneth, Jr. (G.K.)", "TURNER, Michael R.", 
"RYAN, Timothy J.", "COLE, Tom", "BURGESS, Michael C.", "CARTER, John R.", 
"BISHOP, Robert (Rob)", "COSTA, Jim", "WASSERMAN SCHULTZ, Debbie", 
"LIPINSKI, Daniel", "CLEAVER, Emanuel, II", "FORTENBERRY, Jeff", 
"HIGGINS, Brian", "FOXX, Virginia Ann", "McHENRY, Patrick T.", 
"GOHMERT, Louie", "GREEN, Al", "McCAUL, Michael T.", "CONAWAY, K. Michael", 
"MARCHANT, Kenny", "CUELLAR, Henry", "McMORRIS RODGERS, Cathy", 
"MOORE, Gwendolynne S. (Gwen)", "MATSUI, Doris", "SIRES, Albio", 
"McNERNEY, Jerry", "MCCARTHY, Kevin", "LAMBORN, Doug", "PERLMUTTER, Ed", 
"COURTNEY, Joe", "CASTOR, Kathy", "BUCHANAN, Vernon G.", "JOHNSON, Hank", 
"LOEBSACK, Dave", "YARMUTH, John", "SARBANES, John", "WALBERG, Tim", 
"SMITH, Adrian", "CLARKE, Yvette Diane", "JORDAN, Jim", "COHEN, Stephen", 
"FOSTER, Bill", "WELCH, Peter", "LATTA, Robert E.", "WITTMAN, Robert J.", 
"CARSON, André", "BILIRAKIS, Gus", "SCALISE, Steve", "SPEIER, Karen Lorraine Jacqueline (Jackie)", 
"KIRKPATRICK, Ann", "McCLINTOCK, Tom", "HIMES, James A.", "POSEY, Bill", 
"GUTHRIE, Brett", "PINGREE, Chellie", "LUETKEMEYER, Blaine", 
"TITUS, Alice (Dina)", "LUJÁN, Ben Ray", "TONKO, Paul", "FUDGE, Marcia L.", 
"SCHRADER, Kurt", "THOMPSON, Glenn", "ROE, David P. (Phil)", 
"OLSON, Pete", "CONNOLLY, Gerald E. (Gerry)", "QUIGLEY, Mike", 
"CHU, Judy", "GARAMENDI, John", "DEUTCH, Theodore E. (Ted)", 
"GRAVES, Tom", "HUNTER, Duncan Duane", "REED, Thomas W. II", 
"SEWELL, Terri", "GOSAR, Paul", "SCHWEIKERT, David", "CRAWFORD, Rick", 
"WOMACK, Steve", "TIPTON, Scott", "WEBSTER, Daniel A.", "WOODALL, Rob", 
"SCOTT, Austin", "KINZINGER, Adam", "BUCSHON, Larry", "RICHMOND, Cedric", 
"HARRIS, Andy", "KEATING, William R.", "HUIZENGA, Bill", "AMASH, Justin", 
"PALAZZO, Steven", "HARTZLER, Vicky", "LONG, Billy", "JOHNSON, Bill", 
"STIVERS, Steve", "GIBBS, Bob", "KELLY, Mike", "MARINO, Thomas A.", 
"CICILLINE, David N.", "DUNCAN, Jeff", "FLEISCHMANN, Chuck", 
"DESJARLAIS, Scott", "FLORES, Bill", "HERRERA BEUTLER, Jaime", 
"McKINLEY, David", "DUFFY, Sean", "GRIFFITH, H. Morgan", "ROBY, Martha", 
"BROOKS, Mo", "AMODEI, Mark E.", "BONAMICI, Suzanne", "LaMALFA, Doug", 
"HUFFMAN, Jared", "BERA, Ami", "COOK, Paul", "SWALWELL, Eric", 
"BROWNLEY, Julia", "RUIZ, Raul", "TAKANO, Mark", "LOWENTHAL, Alan", 
"VARGAS, Juan", "PETERS, Scott", "YOHO, Ted", "FRANKEL, Lois", 
"COLLINS, Doug", "GABBARD, Tulsi", "SCHNEIDER, Brad", "DAVIS, Rodney", 
"BUSTOS, Cheri", "WALORSKI, Jackie", "BROOKS, Susan", "BARR, Garland H. (Andy) IV", 
"KENNEDY, Joseph P. III", "WAGNER, Ann", "HORSFORD, Steven", 
"KUSTER, Ann McLane", "MENG, Grace", "JEFFRIES, Hakeem", "MALONEY, Sean Patrick", 
"COLLINS, Chris", "HUDSON, Richard", "MEADOWS, Mark", "HOLDING, George E.B.", 
"WENSTRUP, Brad", "BEATTY, Joyce", "JOYCE, David", "MULLIN, Markwayne", 
"PERRY, Scott", "CARTWRIGHT, Matt", "RICE, Tom", "WEBER, Randy", 
"CASTRO, Joaquin", "WILLIAMS, Roger", "VEASEY, Marc", "VELA, Filemon", 
"STEWART, Chris", "KILMER, Derek", "HECK, Denny", "POCAN, Mark", 
"KELLY, Robin L.", "KILDEE, Dan", "SMITH, Jason", "CLARK, Katherine M.", 
"BYRNE, Bradley", "PALMER, Gary James", "GALLEGO, Ruben", "HILL, French", 
"DESAULNIER, Mark James", "AGUILAR, Peter Rey", "LIEU, Ted", 
"TORRES, Norma Judith", "BUCK, Kenneth Robert", "CARTER, Buddy", 
"HICE, Jody Brownlow", "LOUDERMILK, Barry D.", "ALLEN, Rick W.", 
"BOST, Mike", "ABRAHAM, Ralph", "GRAVES, Garret", "MOULTON, Seth", 
"MOOLENAAR, John", "DINGELL, Debbie", "LAWRENCE, Brenda L", "EMMER, Thomas Earl II", 
"NORCROSS, Donald", "WATSON COLEMAN, Bonnie", "ZELDIN, Lee M", 
"RICE, Kathleen Maura", "STEFANIK, Elise M", "KATKO, John", "WALKER, Bradley Mark", 
"ROUZER, David", "ADAMS, Alma", "BOYLE, Brendan Francis", "RATCLIFFE, John", 
"HURD, William Ballard", "BABIN, Brian", "BEYER, Donald Sternoff Jr.", 
"NEWHOUSE, Daniel Milton", "MOONEY, Alex X.", "GROTHMAN, Glenn", 
"KELLY, Trent", "LaHOOD, Darin", "WESTERMAN, Bruce Eugene", "DAVIDSON, Warren", 
"COMER, James", "EVANS, Dwight", "ARRINGTON, Jodey Cook", "BACON, Donald J.", 
"BANKS, James E.", "BARRAGÁN, Nanette Diaz", "BERGMAN, John", 
"BIGGS, Andrew S.", "BLUNT ROCHESTER, Lisa", "BROWN, Anthony Gregory", 
"BUDD, Theodore Paul", "CARBAJAL, Salud", "CHENEY, Liz", "CORREA, Jose Luis", 
"CRIST, Charlie Joseph Jr.", "DEMINGS, Valdez Butler", "DUNN, Neal Patrick", 
"ESPAILLAT, Adriano J.", "FERGUSON, Anderson Drew IV", "FITZPATRICK, Brian K.", 
"GAETZ, Matthew L. II", "GALLAGHER, Michael", "GONZALEZ, Vicente Jr.", 
"GOTTHEIMER, Josh S.", "HIGGINS, Clay", "HOLLINGSWORTH, Joseph Albert III", 
"JAYAPAL, Pramila", "JOHNSON, Mike", "KHANNA, Rohit", "KRISHNAMOORTHI, S. Raja", 
"KUSTOFF, David", "LAWSON, Alfred Jr.", "MARSHALL, Roger Wayne", 
"MAST, Brian Jeffery", "MCEACHIN, Aston Donald", "MITCHELL, Paul", 
"MURPHY, Stephanie", "O'HALLERAN, Thomas C.", "PANETTA, James Varni", 
"RASKIN, Jamie Ben", "ROONEY, Francis", "RUTHERFORD, John Henry", 
"SOTO, Darren Michael", "SUOZZI, Thomas", "ESTES, Ron", "GIANFORTE, Greg", 
"NORMAN, Ralph", "GOMEZ, Jimmy", "CURTIS, John R.", "LAMB, Conor", 
"LESKO, Debbie", "CLOUD, Michael", "BALDERSON, Troy", "HERN, Kevin", 
"MORELLE, Joseph D.", "SCANLON, Mary Gay", "ALLRED, Colin", "ARMSTRONG, Kelly", 
"AXNE, Cynthia", "BAIRD, James", "BRINDISI, Anthony", "BURCHETT, Timothy", 
"CASTEN, Sean", "CISNEROS, Gil", "CLINE, Benjamin", "COX, TJ", 
"CRAIG, Angela", "CRENSHAW, Daniel", "CROW, Jason", "CUNNINGHAM, Joe", 
"DAVIDS, Sharice", "DEAN, Madeleine", "DELGADO, Antonio", "ESCOBAR, Veronica", 
"FINKENAUER, Abby", "FLETCHER, Elizabeth", "FULCHER, Russell", 
"GARCÍA, Jesús", "GARCIA, Sylvia", "GOLDEN, Jared", "GONZALEZ, Anthony", 
"GOODEN, Lance", "GREEN, Mark", "GUEST, Michael", "HAALAND, Debra", 
"HAGEDORN, Jim", "HARDER, Josh", "HAYES, Jahana", "HILL, Katie", 
"HORN, Kendra", "HOULAHAN, Christina", "JOHNSON, Dustin", "JOYCE, John", 
"KIM, Andy", "LEE, Susie", "LEVIN, Mike", "LEVIN, Andy", "LURIA, Elaine", 
"MALINOWSKI, Tomaz", "McADAMS, Ben", "McBATH, Lucy", "MEUSER, Dan", 
"MILLER, Carol", "MUCARSEL-POWELL, Debbie", "NEGUSE, Joseph", 
"OCASIO-CORTEZ, Alexandria", "OMAR, Ilhan", "PAPPAS, Chris", 
"PENCE, Gregory", "PHILLIPS, Dean", "PORTER, Katie", "PRESSLEY, Ayanna", 
"RESCHENTHALER, Guy", "RIGGLEMAN, Denver", "ROSE, Max", "ROSE, John", 
"ROUDA, Harley", "ROY, Charles", "SCHRIER, Kim", "SHALALA, Donna", 
"SHERRILL, Mikie", "SLOTKIN, Elissa", "SPANBERGER, Abigail", 
"SPANO, Ross", "STANTON, Greg", "STAUBER, Peter", "STEIL, Bryan", 
"STEUBE, William", "STEVENS, Haley", "TAYLOR, Nicholas", "TIMMONS, William", 
"TLAIB, Rashida", "TORRES SMALL, Xochitl"), session = c(116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 
116, 116, 116, 116, 116, 116), sessionvote = c(1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2), voter_response = c("n", 
"n", "n", "n", "y", "y", "y", "y", "y", "y", "n", "y", "y", "y", 
"y", "y", "y", "y", "y", "y", "n", "y", "n", "y", "y", "n", "y", 
"n", "y", "n", "y", "y", "n", "y", "y", "n", "y", "n", "n", "n", 
"n", "y", "y", "y", "y", "n", "y", "n", "n", "n", "y", "n", "n", 
"n", "y", "n", "y", "y", "y", "y", "n", "n", "y", "y", "y", "n", 
"y", "y", "y", "y", "n", "n", "y", "n", "y", "y", "y", "n", "n", 
"y", "n", "n", "y", "y", "n", "y", "n", "n", "y", "n", "y", "y", 
"y", "y", "n", "n", "n", "n", "y", "y", "y", "y", "y", "n", "n", 
"n", "y", "n", "n", "n", "n", "y", "n", "n", "y", "n", "n", "n", 
"n", "y", "n", "y", "n", "n", "n", "n", "n", "n", "n", "n", "n", 
"n", "y", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", 
"y", "n", "y", "y", "n", "y", "y", "y", "y", "y", "y", "y", "y", 
"n", "y", "n", "y", "y", "n", "y", "n", "n", "n", "y", "n", "y", 
"y", "y", "y", "y", "n", "n", "n", "n", "n", "y", "n", "n", "n", 
"y", "n", "n", "y", "n", "y", "y", "n", "y", "y", "y", "y", "y", 
"n", "y", "n", "n", "y", "n", "y", "y", "y", "y", "n", "n", "n", 
"n", "n", "n", "n", "n", "y", "n", "y", "y", "n", "y", "y", "n", 
"n", "n", "n", "n", "n", "y", "y", "n", "n", "n", "y", "n", "n", 
"n", "n", "n", "n", "n", "n", "y", "n", "n", "n", "y", "n", "n", 
"y", "y", "n", "y", "n", "y", "y", "y", "n", "y", "n", "n", "n", 
"n", "y", "y", "n", "n", "y", "n", "y", "y", "n", "y", "n", "n", 
"y", "n", "y", "y", "y", "y", "n", "n", "n", "y", "y", "n", "n", 
"n", "y", "n", "n", "n", "n", "n", "n", "y", "y", "y", "y", "n", 
"y", "n", "n", "n", "y", "y", "n", "y", "y", "n", "n", "n", "y", 
"y", "y", "y", "y", "y", "n", "y", "y", "n", "n", "n", "n", "n", 
"y", "n", "y", "y", "y", "y", "y", "n", "n", "y", "y", "y", "y", 
"y", "y", "n", "y", "n", "n", "y", "y", "y", "y", "y", "n", "y", 
"y", "y", "n", "n", "n", "n", "y", "n", "y", "y", "n", "n", "n", 
"y", "n", "n", "n", "y", "n", "n", "y", "y", "y", "y", "y", "n", 
"n", "y", "n", "y", "y", "y", "y", "y", "y", "n", "y", "y", "y", 
"y", "n", "y", "y", "y", "n", "y", "n", "y", "y", "n", "y", "y", 
"y", "n", "y", "y", "y", "n", "y", "y", "n", "n", "y", "n", "y", 
"y", "y", "y", "y", "n", "y", "n", "y", "n", "y", "y", "y", "y", 
"n", "n", "n", "n", "y", "y", "y", "y", "y", "y", "y", "n", "y", 
"y", "y", "y", "y", "y", "y", "y", "n", "y", "n", "y", "y", "n", 
"y", "n", "y", "n", "y", "y", "n", "y", "y", "n", "y", "n", "n", 
"n", "n", "y", "y", "y", "y", "n", "y", "n", "n", "n", "y", "n", 
"n", "n", "y", "n", "y", "y", "y", "y", "n", "n", "y", "y", "y", 
"n", "y", "y", "y", "y", "n", "n", "y", "n", "y", "y", "y", "n", 
"n", "y", "n", "n", "y", "y", "n", "y", "n", "n", "y", "n", "y", 
"y", "y", "y", "y", "n", "n", "n", "y", "y", "y", "y", "y", "n", 
"n", "n", "y", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", 
"y", "n", "y", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", 
"y", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", "n", "y", 
"n", "y", "y", "n", "y", "y", "y", "y", "y", "y", "y", "n", "y", 
"n", "y", "y", "n", "y", "n", "n", "n", "y", "n", "y", "y", "y", 
"y", "y", "n", "n", "n", "n", "n", "y", "n", "n", "n", "y", "n", 
"n", "y", "n", "y", "y", "n", "y", "y", "y", "y", "y", "n", "y", 
"n", "n", "y", "n", "y", "y", "y", "y", "n", "n", "n", "n", "n", 
"n", "n", "n", "y", "n", "y", "y", "n", "y", "y", "n", "y", "n", 
"n", "n", "n", "y", "y", "n", "n", "n", "y", "n", "n", "n", "n", 
"n", "n", "n", "n", "y", "n", "n", "n", "y", "n", "n", "y", "y", 
"n", "y", "n", "y", "y", "y", "n", "y", "n", "n", "n", "n", "y", 
"y", "n", "n", "y", "n", "y", "y", "n", "y", "n", "n", "y", "n", 
"y", "y", "y", "y", "n", "n", "y", "y", "n", "n", "n", "y", "n", 
"y", "n", "n", "n", "n", "y", "y", "y", "n", "y", "n", "y", "n", 
"y", "y", "n", "y", "y", "n", "y", "y", "y", "y", "y", "y", "y", 
"y", "n", "y", "y", "y", "n", "n", "n", "n", "y", "n", "y", "y", 
"y", "y", "y", "n", "n", "y", "y", "y", "y", "y", "y", "y", "y", 
"n", "n", "y", "y", "y", "y", "y", "n", "y", "y", "y", "n", "n", 
"y", "n", "y", "n", "y", "y", "y", "y", "y", "n", "y", "n", "n", 
"n", "y", "n", "n", "y", "y")), row.names = c(NA, -800L), class = c("tbl_df", 
"tbl", "data.frame"))

Solution

  • Here's a solution mainly using combn:

    #Create a wide data.frame with 1 row per session (can be done otherwise)
    nms <- unique(df$name)
    df$voter_response <- ifelse(tolower(df$voter_response) == "y", 1, 0)
    dfwd <- 
      tidyr::pivot_wider(df, names_from = "name", values_from = "voter_response") |> 
      subset(select = nms)
    
    #Create the distance matrix
    mat <- diag(ncol(dfwd))
    colnames(mat) <- rownames(mat) <- nms
    
    #Iterate a function over the combinations of columns: the function
    #looks for the mean similarity value
    comb <- 
      combn(ncol(dfwd), m = 2,
            FUN = \(k) mean(dfwd[, k[1]] == dfwd[, k[2]], na.rm = TRUE))
    
    #Assign these values to both the upper and lower triangles of the matrix.
    mat[upper.tri(mat)] <- mat[lower.tri(mat)] <- comb
    
    #Output
                Tim Dave     Larry John
    Tim   1.0000000  0.5 0.6666667    0
    Dave  0.5000000  1.0 0.0000000    1
    Larry 0.6666667  0.0 1.0000000    0
    John  0.0000000  1.0 0.0000000    1
    

    Data:

    df <- read.table(h=T,text="name session sessionvote voter_response
    Tim 116 1   Y
    Tim 116 2   N
    Tim 117 1   Y
    Tim 117 2   Y
    Dave    117 1   N
    Dave    117 2   Y
    Larry   116 1   Y
    Larry   116 2   Y
    Larry   117 1   Y
    John    117 1   N")