I have the following lists:
group1<-c("A", "B", "D")
group2<-c("C", "E")
group3<-c("F")
and a dataframe with values and corresponding names:
df <- data.frame (name=c("A","B","C","D","E","F"),value=c(1,2,3,4,5,6))
df
name value
1 A 1
2 B 2
3 C 3
4 D 4
5 E 5
6 F 6
I'd like to group the data based on the lists, using the name column;
df
name value group
1 A 1 group1
2 B 2 group1
3 C 3 group2
4 D 4 group1
5 E 5 group2
6 F 6 group3
and sum the values for each group.
df
group sum
1 group1 7
2 group2 8
3 group3 6
I've searched for similar posts, but failed using them for my problem.
Here's an approach. First, use ifelse
to assign groups to each name
, then use aggregate
to get the sum for each group
.
> df$group <- with(df, ifelse(name %in% group1, "group1",
ifelse(name %in% group2, "group2", "group3" )))
> aggregate(value ~ group, sum, data=df)
group value
1 group1 7
2 group2 8
3 group3 6
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With