R 如何根据变量C上的条件,通过变量a分组以从变量B获得最小值
我有3个变量a,B,C的数据。我需要在a上分组,当C为非零时,需要最小值BR 如何根据变量C上的条件,通过变量a分组以从变量B获得最小值,r,plyr,R,Plyr,我有3个变量a,B,C的数据。我需要在a上分组,当C为非零时,需要最小值B > data A B C 1 a 3 0 2 a 6 1 3 a 9 2 4 a 12 2 5 b 3 0 6 b 6 0 7 b 9 0 8 b 12
> data
A B C
1 a 3 0
2 a 6 1
3 a 9 2
4 a 12 2
5 b 3 0
6 b 6 0
7 b 9 0
8 b 12 4
预期产出:
> output
1 2
1 a 6
2 b 12
我试着这样做,运行了2个多小时:
rbind(by(data, data$A, function(x) min(x$B[x$C>0])))
我们按“A”分组,得到“B”的
min
,其中“C”不是0
library(dplyr)
df1 %>%
group_by(A) %>%
summarise(B = min(B[C > 0]))
# A tibble: 2 x 2
# A B
# <chr> <int>
#1 a 6
#2 b 12
或使用
数据。表格
library(data.table)
setDT(df1)[,.(B = min(B[C > 0])) , A]
数据
df1aggregate(B~A,df[df$C!=0,],min)
library(data.table)
setDT(df1)[,.(B = min(B[C > 0])) , A]
df1 <- structure(list(A = c("a", "a", "a", "a", "b", "b", "b", "b"),
B = c(3L, 6L, 9L, 12L, 3L, 6L, 9L, 12L), C = c(0L, 1L, 2L,
2L, 0L, 0L, 0L, 4L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8"))