I want to use ddply or group_by to mutate an existing dataframe based on the values in one of the columns in the dataframe.
I have a dataframe with 3 columns. I want to identify the ROI within each ID and Condition that has the maximum value in df$Value. So for the following df, ROI 3 would be called Max for ID 1+Match condition, ROI 4 would be Max for ID 1+NoMatch Condition and so on.
set.seed(1)
df <- data.frame("ID"=sort(rep_len(1:2, 12)), "ROI"=rep_len(1:6, 12), "Condition"=rep_len(c(rep_len("Match", 3), rep_len("NoMatch", 3)), 12), "Value"=runif(12), MaxROI="None")
I tried using some combinations of ddply and group_by. For instance:
ddply(df, c("ID", "Condition"), mutate, MaxROI[which.max(Value)]="Max")
#generates an error
#Error: unexpected '=' in "ddply(df, c("ID", "Condition"), mutate, MaxROI[which.max(Value)]="
I have looked here, but I don't want to filter the dataframe to keep the rows with max values, but mutate the existing df.
Thank you,
Mrinmayi