Это репрезентативное подмножество моих данных:
> df
Sample Circle Value
1 a1 C27 0.04829484
2 a2 C27 0.10577841
3 a1 C18 0.03977222
4 a2 C18 0.10319845
5 a1 C16 0.03977222
6 a2 C16 0.03095953
Я хотел бы:
1) рассчитать максимальное значение $ Value для каждого круга. Всего три круга, поэтому я получу 3 максимальных значения. Я использовал:
Max_df = df %>% group_by(Circle) %>% do(data.frame(Max_value = max(.$Value)))
> Max_df
# A tibble: 3 x 2
# Groups: Circle [3]
Circle Max_value
<chr> <dbl>
1 C18 0.10319845
2 C27 0.10577841
3 C16 0.03977222
Так что он работает, но не сохраняет информацию о том, какое значение $ Sample (a1 или a2) имеет максимальное значение. Вы бы знали, как это сделать?
2) вычислите второе максимальное значение для каждого круга. Я не могу использовать min()
, потому что в моем реальном наборе данных гораздо больше образцов и кругов. Я попытался отфильтровать строки с максимальными значениями df, используя Max_df. А затем рассчитать максимальные значения этого отфильтрованного df. Так что это будет тот же код, что и в 1).
Однако мне не удается отфильтровать строки с максимальными значениями, сохраненными в Max_Df. Я попытался:
filter(df, Circle %in% Max_df$Circle & Value %in% Max_df$Max_Value)
Проблема заключается в том, что этот код сохраняет третью строку df, поскольку его значение равно максимальному значению C16 (строка 5). Принимая во внимание, что третья строка абсолютно не является максимальным значением круга C18.
Итак, как мне отфильтровать таблицу по двум условиям одновременно?