2014-01-28 3 views
0

Оригинал таблицы:Преобразование нескольких строк в одной строке в R

ID------REMARK 

1------ A 

2------ B 

1-------AG 

3-------V 

2-------BS 

1--------E 

4--------B 

4--------BS 

требуемую таблицу:

ID......REMARK 

1-------A,AG,E 

2-------B,BS 

3-------V 

4-------B,BS 

, а затем список в соответствии с часто встречающихся последовательностей:

REMARK......OCCURRENCES 


A,AG,E-------1 

B,BS---------2 

V -----------1 
+2

Добро пожаловать в StackOverflow. Пожалуйста, прочитайте [** о Stackoverflow **] (http://stackoverflow.com/about) и [**, что спросить **] (http://stackoverflow.com/help/on-topic). Как вы найдете в этих двух ссылках, вы должны «показать свою работу», а «Вопросы, требующие кода, должны продемонстрировать минимальное понимание проблемы, которая будет решена. Включите попытки решения, почему они не работают, и ожидаемые результаты» , Благодарю. – Henrik

+2

И, пожалуйста, не используйте КАПИТАЛЫ ДЛЯ НОРМАЛЬНОГО ТЕКСТА ... – SlowLearner

ответ

3

Вот такой подход. dat это имя вашего фрейма данных:

res1 <- aggregate(REMARK ~ ID, dat, paste, collapse = ",") 
# ID REMARK 
# 1 1 A,AG,E 
# 2 2 B,BS 
# 3 3  V 
# 4 4 B,BS 

table(res1$REMARK) 
# 
# A,AG,E B,BS  V 
#  1  2  1 
1

Вот plyr решение:

library(plyr) 
dt.agg <- ddply(dt, .(ID), summarise, Remark = paste(REMARK, collapse = ",", sep = "") ) 
ddply(dt.agg, .(Remark), nrow) 

    Remark V1 
1 A,AG,E 1 
2 B,BS 2 
3  V 1 
Смежные вопросы