OpenSauce
OpenSauce

Reputation: 354

Using dplyr group_by() and distinct() without losing one of my variables

I have a dataframe named data_logistic with three columns: sim, time, and infected.

I am eliminating all repeats of infected at maximum by using the command:

library(dplyr)
data_logistic_small <- 
    data_logistic %>% 
    group_by(sim1.2) %>%
    distinct(infected1)

However, when I do this, I lose the column for time, is there a way to keep all three columns whilst using the distinct function to remove all repeated values of infection?

Here is a reproducible data_frame to use, this is not the real data frame but the problem remains the same:

structure(list(sim1.2 = c("sim1", "sim1", "sim1", "sim1", "sim2", 
"sim2", "sim2", "sim2", "sim3", "sim3", "sim3", "sim3", "sim4", 
"sim4", "sim4", "sim4", "sim5", "sim5", "sim5", "sim5", "sim6", 
"sim6", "sim6", "sim6", "sim7", "sim7", "sim7", "sim7", "sim8", 
"sim8", "sim8", "sim8", "sim9", "sim9", "sim9", "sim9", "sim10", 
"sim10", "sim10", "sim10", "sim11", "sim11", "sim11", "sim11", 
"sim12", "sim12", "sim12", "sim12", "sim13", "sim13", "sim13", 
"sim13", "sim14", "sim14", "sim14", "sim14", "sim15", "sim15", 
"sim15", "sim15", "sim16", "sim16", "sim16", "sim16", "sim17", 
"sim17", "sim17", "sim17", "sim18", "sim18", "sim18", "sim18", 
"sim19", "sim19", "sim19", "sim19", "sim20", "sim20", "sim20", 
"sim20", "sim21", "sim21", "sim21", "sim21", "sim22", "sim22", 
"sim22", "sim22", "sim23", "sim23", "sim23", "sim23", "sim24", 
"sim24", "sim24", "sim24", "sim25", "sim25", "sim25", "sim25", 
"sim26", "sim26", "sim26", "sim26", "sim27", "sim27", "sim27", 
"sim27", "sim28", "sim28", "sim28", "sim28", "sim29", "sim29", 
"sim29", "sim29", "sim30", "sim30", "sim30", "sim30", "sim31", 
"sim31", "sim31", "sim31", "sim32", "sim32", "sim32", "sim32", 
"sim33", "sim33", "sim33", "sim33", "sim34", "sim34", "sim34", 
"sim34", "sim35", "sim35", "sim35", "sim35", "sim36", "sim36", 
"sim36", "sim36"), time1 = c(10, 50, 100, 200, 10, 50, 100, 200, 
10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 
100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 
10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 
100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 
10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 
100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 
10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 
100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 
10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 100, 200, 10, 50, 
100, 200, 10, 50, 100, 200, 10, 50, 100, 200), infected1 = c(200, 
1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 
200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 
1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 
1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 
1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 
200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 
1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 
1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 
1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 
200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 
1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 
1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 
1000, 1000, 1000, 200, 1000, 1000, 1000, 200, 1000, 1000, 1000
)), class = "data.frame", row.names = c(NA, -144L))

Upvotes: 1

Views: 58

Answers (1)

OpenSauce
OpenSauce

Reputation: 354

Very easy solution, use

%>% distinct (infected, .keep_all=TRUE).

Upvotes: 1

Related Questions