2011-01-10 3 views
2

Я R-beginner, я предполагаю, что это не так сложно. Я хочу, чтобы объединить значения из data.frame, как это:Объединить значения data.frame

Input data.frame:

col1 col2 
1 a 50 
2 a 80 
3 b 40 
4 c 20 

Выход data.frame:

col1 col1 
1 a [50,80] 
2 b [40] 
3 c [20] 

В входе, col1 не является уникальным. Для каждого значения в col1, я хочу объединить все значения в col2 в вектор. На выходе col1 уникален.

Можете ли вы мне помочь?

ответ

5

Записи в кадре данных не могут быть списками, они должны быть атомарными. То, что вы, вероятно, хотите, чтобы получить именной список векторов:

df <- data.frame(col1 = c('a','a','b','c'), col2 = c(50,80,40,20)) 
with(df, tapply(col2, col1, list)) 

который является именованный список:

$a 
[1] 50 80 

$b 
[1] 40 

$c 
[1] 20 
+0

Это именно то, что я хочу, спасибо! Mirko – Mirko

+0

«data.frame' * can * на самом деле имеет список в виде столбца, это не всегда самая простая задача для работы с:' aggregate (col2 ~ col1, df, c) '. – A5C1D2H2I1M1N2O1R2T1

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