R: объединение уровней факторов и создание суммы в объединенных столбцах

Я новичок в R, и это сводит меня с ума.

У меня есть кадр данных:

someData = data.frame(Term=c('a', 'b', 'c', 'd', 'a', 'a', 'c', 'c'), Freq=c(1:8), Category=c(1,2,1,2,1,2,1,2));
someData$Term = as.factor(someData$Term)
someData$Category = as.factor(someData$Category)

и хотел бы объединить термины a и c (оба фактора) в x, суммируя их соответствующие частоты и сохраняя категории, чтобы у меня был следующий результирующий кадр данных:

Term Freq Category
x    16       1
b    2        2
d    4        2
x    14       2

Следующий код только изменяет все имена на x, но не суммирует их значения.

combine <- c("a", "c");
levels(somedata$Term)[levels(somedata$Term) %in% combine] <- paste("x");

person RalfB    schedule 23.03.2014    source источник


Ответы (1)


Это выглядит действительным:

#levels(someData$Term) = list(b = "b", d = "d", x = c("a", "c")) #just another approach
aggregate(Freq ~ Term + Category, someData, sum)
#  Term Category Freq
#1    x        1   16
#2    b        2    2
#3    d        2    4
#4    x        2   14
person alexis_laz    schedule 23.03.2014
comment
Мой реальный фрейм данных содержит 10000 терминов и 100 категорий, но у меня есть только 5 терминов, которые я хочу объединить. Есть ли способ войти в уровни менее явно? - person RalfB; 24.03.2014
comment
@ user2377039: Что ж, то, что вы сделали, чтобы повысить уровень Term, возможно, является наиболее подходящим способом. Я только что добавил шаг aggregate (для ночного поиска репутации) :-). - person alexis_laz; 24.03.2014
comment
В конце концов, это сработало с агрегатной функцией. Спасибо. Твой ночной поиск представителей окупился, alexis_laz ;) - person RalfB; 24.03.2014