df<-structure(list(AC_NAME = c("Behat", "Behat", "Behat", "Behat",
"Nakur", "Nakur", "Nakur", "Nakur"), CAND_NAME = c("MAHAVEER SINGH RANA",
"NARESH", "UMAR ALI KHAN", "AJAY CHAUHAN", "DR. DHARAM SINGH SAINI",
"IMRAN MASOOD", "FIROZ AFTAB", "GOVIND CHOUDHARY"), PARTYABBRE = c("BSP",
"INC", "SP", "BJP", "BSP", "INC", "SP", "IND"), TOTVOTPOLL = c(70274,
69760, 47366, 23623, 89187, 84623, 29503, 14226), POSITION = c(1,
2, 3, 4, 1, 2, 3, 4)), row.names = c(NA, 8L), class = "data.frame")
>df
AC_NAME CAND_NAME PARTYABBRE TOTVOTPOLL POSITION
1 Behat MAHAVEER SINGH RANA BSP 70274 1
2 Behat NARESH INC 69760 2
3 Behat UMAR ALI KHAN SP 47366 3
4 Behat AJAY CHAUHAN BJP 23623 4
5 Nakur DR. DHARAM SINGH SAINI BSP 89187 1
6 Nakur IMRAN MASOOD INC 84623 2
7 Nakur FIROZ AFTAB SP 29503 3
8 Nakur GOVIND CHOUDHARY IND 14226 4
我想让它像这样重塑。
data
AC_NAME Candidate_Rank1 Candidate_Rank2 Candidate_Rank3 Candidate_Rank4 Party_Rank1 Party_Rank2 Party_Rank3 Party_Rank4 Votes_Rank1 Votes_Rank2 Votes_Rank3
1 Behat MAHAVEER SINGH RANA NARESH UMAR ALI KHAN AJAY CHAUHAN BSP INC SP BJP 70274 69760 47366
2 Nakur DR. DHARAM SINGH SAINI IMRAN MASOOD FIROZ AFTAB GOVIND CHOUDHARY BSP INC SP IND 89187 84623 29503
Votes_Rank4 Poistion1 Poistion2 Poistion3 Poistion4
1 23623 1 2 3 4
2 14226 1 2 3 4
我试过dcast
。使用它,我有比期望的更多的列。我想在这里行不通,我不确定。谁来指引我。我不介意列名和我的一样,以后可以修改。
dd <- dcast(data, AC_NAME+CAND_NAME ~POSITION ,value.var = "POSITION")
您可以使用dcast
-
library(data.table)
dcast(setDT(df), AC_NAME ~POSITION ,
value.var = c('CAND_NAME', 'PARTYABBRE', 'TOTVOTPOLL'))
# AC_NAME CAND_NAME_1 CAND_NAME_2 CAND_NAME_3 CAND_NAME_4 PARTYABBRE_1 PARTYABBRE_2
#1: Behat MAHAVEER SINGH RANA NARESH UMAR ALI KHAN AJAY CHAUHAN BSP INC
#2: Nakur DR. DHARAM SINGH SAINI IMRAN MASOOD FIROZ AFTAB GOVIND CHOUDHARY BSP INC
# PARTYABBRE_3 PARTYABBRE_4 TOTVOTPOLL_1 TOTVOTPOLL_2 TOTVOTPOLL_3 TOTVOTPOLL_4
#1: SP BJP 70274 69760 47366 23623
#2: SP IND 89187 84623 29503 14226
或使用tidyr::pivot_wider
tidyr::pivot_wider(df, names_from = POSITION, values_from = c(CAND_NAME, PARTYABBRE, TOTVOTPOLL))
POSITION
value已经包含在新数据框的列名中