Как использовать что-то вроде tapply, но оставить другие столбцы в R - PullRequest
1 голос
/ 23 апреля 2020

допустим, у меня есть этот фрейм данных:

 Date Value1 Value2
01-01   13.6     20
01-01   25.4     25
01-01   49.5     18
02-01   12.2     22
02-01   28.2     35
02-01   42.2     26

, и я хотел бы сохранить только те строки в этой таблице, которые имеют минимальное значение "Value1" для каждой "даты", поэтому в этом случае:

 Date Value1 Value2
01-01   13.6     20
02-01   12.2     22

Я бы использовал tapply(df$Value1, df$Date, min), если бы не было столбца «Value2», что бы я хотел сохранить в этой итоговой таблице. У вас есть что-то простое, чтобы предложить? Я нашел разные похожие темы, но так и не понял, как адаптироваться в моем случае.

1 Ответ

2 голосов
/ 23 апреля 2020

Мы можем slice после группировки по 'Дате'

library(dplyr)
df1 %>%
   group_by(Date) %>%
   slice(which.min(Value1))

Или с filter

df1 %>%
  group_by(Date) %>%
  filter(Value1 == min(Value1))

В base R, это может быть единым с ave

df1[with(df1, Value1 == ave(Value1, Date, FUN = min)),]
...