2016-08-12 2 views
0

У меня есть df с именем ColorMap, в котором я хочу усреднить все числовые значения, соответствующие одной и той же функции (дальнейшие пояснения ниже). Здесь находится df.Усреднение повторяющихся значений в кадре данных R

> ColorMap 
    KEGGnumber Colors 
1 c("C00489" 0.162 
2  "C06104" 0.162 
3 "C02656") 0.162 
4  C00163 -0.173 
5 c("C02656" -0.140 
6  "C00036" -0.140 
7  "C00232" -0.140 
8  "C01571" -0.140 
9 "C00422") -0.140 
10 c("C00402" 0.147 
11 "C06664" 0.147 
12 "C06687" 0.147 
13 "C02059") 0.147 
14 c("C00246" 0.069 
15 "C00902") 0.069 
**16  C00033 0.011 
... 
25  C00033 -0.073** 
26  C00048 0.259 
**27 c("C00803" 0.063 
... 
37  C00803 -0.200 
38  C00803 -0.170** 
39 c("C00164" -0.020 
40 "C01712" -0.020 
... 
165 c("C00246" 0.076 
166 "C00902") 0.076 
**167  C00163 -0.063 
... 
169  C00163 0.046** 
170 c("C00058" -0.208 
171 "C00036") -0.208 
172  C00121 -0.178 
173  C00033 -0.193 
174  C00163 -0.085 

Я хотел бы в финале выглядеть как этот

> ColorMap 
    KEGGnumber Colors 
1  C00489 0.162 
2  C06104 0.162 
3  C02656 0.162 
4  C00163 -0.173 
5  C02656 -0.140 
6  C00036 -0.140 
7  C00232 -0.140 
8  C01571 -0.140 
9  C00422 -0.140 
10  C00402 0.147 
11  C06664 0.147 
12  C06687 0.147 
13  C02059 0.147 
14  C00246 0.069 
15  C00902 0.069 
**16 C00033 0.031** 
26  C00048 0.259 
**27 C00803 -0.100** 
39  C00164 -0.020 
40  C01712 -0.020 
... 
165 C00246 0.076 
166 C00902 0.076 
**167 C00163 0.0085** 
170 C00058 -0.208 
171 C00036 -0.208 
172 C00121 -0.178 
173 C00033 -0.193 
174 C00163 -0.085 

Они не должны быть рядом друг с другом, я просто выбрал тех, для удобства визуализации. Я хотел бы, чтобы среднее значение всего Colors было равно KEGGvalue. Таким образом, каждый KEGGvalue уникален, дубликатов нет.

+1

Вы должны быть обеспокоены первой колонке исходных данных. Похоже, он не разбирался правильно, когда вы его читали. –

+0

Да, я знаю, однако это можно легко исправить с помощью rehx bash, и я не так обеспокоен этим. Однако, если у вас есть решение в r, я бы с удовольствием это услышал. –

+0

Хорошо, если вы можете позаботиться о том, чтобы очистить первую колонку, остальное - обман [этого r-faq] (http://stackoverflow.com/q/11562656/903061) – Gregor

ответ

1

Вы можете очистить этот столбец с помощью

library(stringr) 
ColorMap$KEGGnumber <- str_extract(ColorMap$KEGGnumber, "[C][0-9]+") 

Аргумента pattern позволяет сопрягать с регулярным выражением, в этом случае, простой, говорят вам, чтобы соответствовать заглавной букве C с последующей любым числом номера.

После группировки с использованием dplyr мы имеем

library(dplyr) 
ColorMap %>% group_by(KEGGnumber) %>% summarize(mean(Colors)) 
Смежные вопросы