Programação R - manobra de quadro de dados

Suponha que eu tenha o seguinte quadro de dados:

   dc tmin tmax cint wcmin wcmax wsmin wsmax gsmin gsmax  wd rmin rmax  cir lr
1: 24   -1    4    5    -5    -2    20    25    35    40  90 11.8 26.6 14.8  3
2: 41   -3    5    8    -8    -3    15    20    35    40  90 10.0 23.5 13.5  3
3: 48    0    5    5    -4     0    30    35    45    50  45  7.3 19.0 11.7  6
4: 50    0    5    5    -4     0    30    35    45    50  45  7.3 19.0 11.7  6
5: 52    3    5    2    -3     1    20    25    35    40  45  6.7 17.4 10.7  6
6: 57   -2    5    7    -6    -1    25    30    35    40 315  4.4 13.8  9.4  7
   lc wc    li yd   yr nF factdcx
1:  1  3  TRUE  1 2010  2      24
2:  1  3  TRUE  1 2010  8      41
3:  2  3  TRUE  1 2010  0      48
4:  2  3  TRUE  1 2010  0      50
5:  2  3  TRUE  1 2010  0      52
6:  3  3 FALSE  1 2010  0      57

Gostaria de transformá-lo em um novo quadro de dados como o seguinte:

   dc tmin tmax cint wcmin wcmax wsmin wsmax gsmin gsmax  wd rmin rmax  cir lr
1: 24   -1    4    5    -5    -2    20    25    35    40  90 11.8 26.6 14.8  3
2: 41   -3    5    8    -8    -3    15    20    35    40  90 10.0 23.5 13.5  3
3: 48    0    5    5    -4     0    30    35    45    50  45  7.3 19.0 11.7  6
4: 52    3    5    2    -3     1    20    25    35    40  45  6.7 17.4 10.7  6
5: 57   -2    5    7    -6    -1    25    30    35    40 315  4.4 13.8  9.4  7
   lc wc    li yd   yr nF                                       factdcx
1:  1  3  TRUE  1 2010  2                                        24  
2:  1  3  TRUE  1 2010  8                                        41
3:  2  3  TRUE  1 2010  0 (sum of nF for 48 and 50, factdcx)     48
4:  2  3  TRUE  1 2010  0                                        52 
5:  3  3 FALSE  1 2010  0                                        57  

Como eu posso fazer isso? (Certamente, o dataframe, abc, é muito maior, mas quero a soma de todas as categorias de 48 e 50 e agrupe-a em uma nova categoria, digamos '48').

Muito Obrigado!

> dput(head(abc1))
structure(list(dc = c(24L, 41L, 48L, 50L, 52L, 57L), tmin = c(-1L, 
-3L, 0L, 0L, 3L, -2L), tmax = c(4L, 5L, 5L, 5L, 5L, 5L), cint = c(5L,
8L, 5L, 5L, 2L, 7L), wcmin = c(-5L, -8L, -4L, -4L, -3L, -6L), 
wcmax = c(-2L, -3L, 0L, 0L, 1L, -1L), wsmin = c(20L, 15L, 
30L, 30L, 20L, 25L), wsmax = c(25L, 20L, 35L, 35L, 25L, 30L
), gsmin = c(35L, 35L, 45L, 45L, 35L, 35L), gsmax = c(40L, 
40L, 50L, 50L, 40L, 40L), wd = c(90L, 90L, 45L, 45L, 45L, 
315L), rmin = c(11.8, 10, 7.3, 7.3, 6.7, 4.4), rmax = c(26.6, 
23.5, 19, 19, 17.4, 13.8), cir = c(14.8, 13.5, 11.7, 11.7, 
10.7, 9.4), lr = c(3L, 3L, 6L, 6L, 6L, 7L), lc = c(1L, 1L, 
2L, 2L, 2L, 3L), wc = c(3L, 3L, 3L, 3L, 3L, 3L), li = c(TRUE, 
TRUE, TRUE, TRUE, TRUE, FALSE), yd = c(1L, 1L, 1L, 1L, 1L, 
1L), yr = c(2010L, 2010L, 2010L, 2010L, 2010L, 2010L), nF = c(2L, 
8L, 0L, 0L, 0L, 0L), factdcx = structure(1:6, .Label = c("24", 
"41", "48", "50", "52", "57", "70"), class = "factor")), .Names = c("dc", 
"tmin", "tmax", "cint", "wcmin", "wcmax", "wsmin", "wsmax", "gsmin", 
"gsmax", "wd", "rmin", "rmax", "cir", "lr", "lc", "wc", "li", 
"yd", "yr", "nF", "factdcx"), class = c("data.table", "data.frame"
), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x054b24a0>)

Ainda tenho um problema, senhor / senhora:

 > head(abc1 (updated))
   dc tmin tmax cint wcmin wcmax wsmin wsmax gsmin gsmax  wd rmin rmax  cir lr
1: 24   -1    4    5    -5    -2    20    25    35    40  90 11.8 26.6 14.8  3
2: 41   -3    5    8    -8    -3    15    20    35    40  90 10.0 23.5 13.5  3
3: 48    0    5    5    -4     0    30    35    45    50  45  7.3 19.0 11.7  6
4: 52    3    5    2    -3     1    20    25    35    40  45  6.7 17.4 10.7  6
5: 57   -2    5    7    -6    -1    25    30    35    40 315  4.4 13.8  9.4  7
6: 70   -2    3    5    -4    -1    20    25    30    35 360  3.6 10.2  6.6  7
   lc wc    li yd   yr nF factdcx
1:  1  3  TRUE  1 2010  2      24
2:  1  3  TRUE  1 2010  8      41
3:  2  3  TRUE  1 2010 57      48
4:  2  3  TRUE  1 2010  0      52
5:  3  3 FALSE  1 2010  0      57
6:  3  2  TRUE  1 2010  1      70

A soma de nF estava incorreta, deveria ser zero.

questionAnswers(1)

yourAnswerToTheQuestion