'Sum with particular condition

I would like to know some information, it is possible make a group by with this particular condition:

  • Column Sepal.length take the first value;
  • Sum the column that began with Petal
  • Not select Sepal.Width

I have try this but I doesn't work:

m <- iris
    
m %>% 
  group_by(Species) %>% 
  summarise(across(starts_with("Petal"), sum)) %>% 
  summarise(F = first(Sepal.length))  # first for each Species


Solution 1:[1]

Using data.table:

M = data.table(iris)
M[, 
  .(Petal.sum = sum(.SD), F = first(Sepal.Length)), 
  by = Species,
  .SDcols = patterns('^Petal')]

#       Species Petal.sum     F
#        <fctr>     <num> <num>
# 1:     setosa      85.4   5.1
# 2: versicolor     279.3   7.0
# 3:  virginica     378.9   6.3

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 sindri_baldur