0

Let me create a dummy dataset first:

Subject<- c(1, 1, 1, 1, 2, 2, 2, 2)
Sample<- c(100, 200, 300, 400, 200, 300, 400, 500)
df<-cbind.data.frame(Subject,Sample)

How would I go about finding the minimum value of the variable Sample within a given Subject value? I.e. when subject equals 1, I want to return a value of 100, while when subject equals 2, I want to return a value of 200.

Thanks all

johnny2554
  • 33
  • 4

2 Answers2

0

We can use tidyverse

library(dplyr)
df %>%
     group_by(Subject) %>%
     summarise(Sample = min(Sample))

Or with base R

subset(df[do.call(order, df), ], !duplicated(Subject))
  Subject Sample
1       1    100
5       2    200
akrun
  • 874,273
  • 37
  • 540
  • 662
0

There are very many ways to do this in base R:

aggregate(Sample~Subject, df, min)
  Subject Sample
1       1    100
2       2    200

or even

with(df, tapply(Sample, Subject, min))
  1   2 
100 200 

or even

with(df, by(Sample, Subject, min))
Subject: 1
[1] 100
---------------------------------------------------- 
Subject: 2
[1] 200

or even

 with(df, sapply(split(Sample, Subject), min))
  1   2 
100 200 
Onyambu
  • 67,392
  • 3
  • 24
  • 53