У меня есть кадр данных в R, который выглядит следующим образом:Условная сумма в R и 2 условия
species sampletype content
P1 O1 10
P1 O2 12
P1 O3 9
P1 A 4
P1 A 3
P1 A 4
P2 O1 21
P2 O1 12
P2 O2 4
P2 O3 6
P2 A 7
P2 A 7
P2 A 3
P3 O1 15
P3 O1 13
P3 O1 5
P3 O1 12
P3 A 5
P3 A 7
P3 A 8
P4 O1 12
P4 O1 11
P4 O2 8
P4 O2 2
P4 A 4
P4 A 3
P4 A 4
Теперь мне нужно среднее содержание O * образцов на вид, где O1, O2 и O3 являются отдельными образцы, но повторное появление, например, O1 считается одним O1 (соответственно для O2 и O3). Таким образом, результат должен поставить что-то вроде этого:
P1 = (10+12+9)/3
P2 = (21+12+4+6)/3 (since there is O1,O2 and O3)
P3 = (15+13+5+12)/1 (since only O1 occurs)
P4 = (12+11+8+2)/2 (since only O1 and O2 occur)
Я пробовал с слиянием, агрегатом, Grep .. но я борюсь с синтаксисом и сложностью.
+1 Вы правильно прочитали вопрос! Хороший ответ. –
работал хорошо, просто и хорошо anwser – mace
'df <- subset (x, sampletype! =" A "); by (df, df $ species, function (x) {sum (as.numeric (x [["content"]]))/length (unique (x [["sampletype"]])}) 'должно работать также где x - это имя фрейма данных –