Hi I have two columns in data frame. First column is based on "ID" assigned to each group of my data (similar ID depicts one group). From second column, I want to identify highest value among each group and want to assign the same ID to that highest value. Right now the data looks like: ID Value 1 0.69 1 0.31 2 0.01 2 0.99 3 1.00 4 NA 4 0 4 1 5 0.5 5 0.5 I want to use R program to get results as below: ID Value 1 0.69 2 0.99 3 1.00 4 1 5 0.5 Kindly guide me in this regard. Thanks Saba
Finding Highest value in groups
3 messages · Saba Sehrish, Tom, David L Carlson
Assuming your dataframe is in a variable x:
require(dplyr) x %>% group_by(ID) %>% summarise(maxVal = max(Value,na.rm=TRUE))
On Fri, 2016-04-22 at 13:51 +0000, Saba Sehrish via R-help wrote:
Hi I have two columns in data frame. First column is based on "ID" assigned to each group of my data (similar ID depicts one group). From second column, I want to identify highest value among each group and want to assign the same ID to that highest value. Right now the data looks like: ID Value 1 0.69 1 0.31 2 0.01 2 0.99 3 1.00 4 NA 4 0 4 1 5 0.5 5 0.5 I want to use R program to get results as below: ID Value 1 0.69 2 0.99 3 1.00 4 1 5 0.5 Kindly guide me in this regard. Thanks Saba
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Base R functions can handle this easily. It is preferable to use dput() as a compact way of providing data on the list:
dta <- read.table(text="ID Value
+ 1 0.69 + 1 0.31 + 2 0.01 + 2 0.99 + 3 1.00 + 4 NA + 4 0 + 4 1 + 5 0.5 + 5 0.5 + ", header=TRUE)
dput(dta)
structure(list(ID = c(1L, 1L, 2L, 2L, 3L, 4L, 4L, 4L, 5L, 5L),
Value = c(0.69, 0.31, 0.01, 0.99, 1, NA, 0, 1, 0.5, 0.5)), .Names = c("ID",
"Value"), class = "data.frame", row.names = c(NA, -10L))
Then you just need the aggregate() function:
aggregate(Value~ID, dta, max, na.rm=TRUE)
ID Value 1 1 0.69 2 2 0.99 3 3 1.00 4 4 1.00 5 5 0.50 See ?aggregate for the help page. ------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Tom Wright Sent: Friday, April 22, 2016 9:13 AM To: Saba Sehrish Cc: R-help Mailing List Subject: Re: [R] Finding Highest value in groups Assuming your dataframe is in a variable x:
require(dplyr) x %>% group_by(ID) %>% summarise(maxVal = max(Value,na.rm=TRUE))
On Fri, 2016-04-22 at 13:51 +0000, Saba Sehrish via R-help wrote:
Hi I have two columns in data frame. First column is based on "ID" assigned to each group of my data (similar ID depicts one group). From second column, I want to identify highest value among each group and want to assign the same ID to that highest value. Right now the data looks like: ID Value 1 0.69 1 0.31 2 0.01 2 0.99 3 1.00 4 NA 4 0 4 1 5 0.5 5 0.5 I want to use R program to get results as below: ID Value 1 0.69 2 0.99 3 1.00 4 1 5 0.5 Kindly guide me in this regard. Thanks Saba
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
______________________________________________ R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.