2016-11-07 5 views
0

У меня есть кадр данных, как это:Преобразование R Dataframe с длиной до широкого формата и конкатенации строки значения

df <- data.frame (Subject = c(1,1,1,2,2,3,3), Product = c("A","B","C","B","C","A","D") 

, и я хотел бы заменить его (в формате «широкий»), как это:

df_replace <- data.frame(Subject = c(1,2,3), Product = c("A;B;C","B;C","A;D")) 

Новое значение продукта должно быть объединенной строкой исходных значений продукта для данного объекта.

Я экспериментирую с dcast ... но я не нашел способ продвинуться вперед. (но я предполагаю ... это просто).

+1

как это 'ДФ%>% group_by (субъект)%>% реферирования (продукты = пасты (продукт, коллапс = ";"))' 'добавить unique' в пасте, если вы можете иметь несколько идентичны продукты на предмет – agenis

ответ

0

Вы можете использовать aggregate.

xy <- read.table(text = "Subject Product 
1 ProdA 
1 ProdB 
1 ProdC 
2 ProdB 
2 ProdC 
2 ProdD 
3 ProdA 
3 ProdB", header = TRUE) 

aggregate(Product ~ Subject, FUN = paste, collapse = ";", data = xy) 

    Subject   Product 
1  1 ProdA;ProdB;ProdC 
2  2 ProdB;ProdC;ProdD 
3  3  ProdA;ProdB 
+1

Дорогой Роман, спасибо вам большое. Я был слепым. – frajuegies

 Смежные вопросы

  • Нет связанных вопросов^_^