user2300940
user2300940

Reputation: 2385

Take mean of rows with same condition

In my data frame below I would like to take the mean of RowMeansCollapsed and RowStDev for rows where RowNamesLengthCollapsed is the same. THis will produce an output data frame with only unique RowNamesLengthCollapsed.

> head(RowMeans_Names)
                  RowNamesCollapsed RowMeansCollapsed         RowStDev RowNamesLengthCollapsed
1  GCATTGGTGGTTCAGTGGTAGAATTCTCGCCT  38.2083333333333 140.255174717683                      32
2            AGGTTCCGGATAAGTAAGAGCC            3.5625 6.62977732419582                      22
3            TCTTAACCCGGACCAGAAACTA              3.25 7.10226057415228                      22
4             CTGACCTATGAATTGACAGCC           29.1875 110.206439061093                      21
5            TACCCTGTAGAACCGAATTTGT  46.6041666666667 161.866772973895                      22
6 GTTTCCGTAGTGTAGTGGTTATCACGTTCGCCT          41.96875 148.825680659234                      33

Upvotes: 0

Views: 41

Answers (2)

Pankaj Kaundal
Pankaj Kaundal

Reputation: 1022

Maybe this might help you .

df2 <- aggregate(cbind(RowMeansCollapsed, RowStDev) ~ RowNamesCollapsed, df, mean)

Upvotes: 1

Konrad Rudolph
Konrad Rudolph

Reputation: 545508

Using ‹dplyr›, this is trivial:

RowMeans_Names %>%
    group_by(RowNamesCollapsed) %>%
    summarize(RowMeansCollapsed = mean(RowMeansCollapsed),
              RowStDev = mean(RowStDev),
              RowNamesLengthCollapsed = first(RowNamesLengthCollapsed))

Upvotes: 2

Related Questions