如何在R中使用类似于tapply的东西,但保留其他列。

问题描述 投票:0回答:1

假设我有这样一个数据框。

 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

我想只保留这个表中每个 "Date "有最小 "Value1 "的行,所以在这种情况下, :

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

我将使用 tapply(df$Value1, df$Date, min) 如果没有 "Value2 "列,但我想在我的汇总表中保留这列。你有什么简单的建议吗?我找到了不同的类似的主题,但从来没有理解如何适应我的情况。

r aggregate tapply
1个回答
3
投票

我们可以 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)),]
© www.soinside.com 2019 - 2024. All rights reserved.