Среднее в кадре данных R
У меня есть датафрейм, который выглядит так:
name val type group
1 A3330 184 ave IX13
2 A3330 42 min IX13
3 A1473 195 ave IX01
4 A1473 93 min IX01
5 A3330 80 ave BG12
6 A3330 44 min BG12
7 A1473 15 ave IX3
8 A1473 91 min IX3
Я хочу усреднить каждое значение в val, по группам, если тип одинаков. Таким образом, 1 и 5 усредняются, несмотря на то, что это разные группы. То же самое касается 2 и 6, 3 и 7, а также 4 и 8. В конце я надеюсь получить новый фрейм данных, который будет выглядеть так:
name val type
A3330 132 ave
A333 43 min
A1473 105 ave
A1473 92 min
Я думаю, что я должен сделать что-то вроде этого:
for (metric in type)
for(names in name)
mean(df[df$name==names && type==metric, df$type])
}
}
Но в моем ограниченном опыте R всегда есть лучший способ, чем зацикливаться. Какие-либо предложения?
1 ответ
Решение
Сам не проверял, но с помощью пакета data.table, что-то вроде этого должно работать для вас -
library(data.table)
df <- data.table(df)
df2 <- df[,
list(
meanval = mean(val)
),
by = c('name','type')
]