Sample dataframe:
name1 <- c('hi', 'bye')
A <- c(1, 5)
B <- c(2, 6)
C <- c(3, 7)
dummy.df <- data.frame(name, A, B, C)
name1 A B C
1 hi 1 2 3
2 bye 5 6 7
What I would like to end up with:
name letter frequency
1 hi A 1
2 hi B 2
3 hi C 3
4 hi A 5
5 hi B 6
6 hi C 7
Below is what I tried:
name <- rep(name1, each = 3)
letter <- rep(colnames(dummy.df[ ,c(2:4)]), times = 2)
dummy_num <- dummy.df[ ,c(2:4)] #subsetting to get rid of the first column (non-numeric)
trans_row <- function(i){
transpose(dummy_num[i, , drop = TRUE])}
#creating a function to transpose each row of the df
data.frame(name, letter, as.vector(c(trans_row(1), trans_row(2))))
name letter X1 X2 X3 X5 X6 X7
1 hi A 1 2 3 5 6 7
2 hi B 1 2 3 5 6 7
3 hi C 1 2 3 5 6 7
4 bye A 1 2 3 5 6 7
5 bye B 1 2 3 5 6 7
6 bye C 1 2 3 5 6 7
The first two columns are no problem, but I can't get the last one as desired.