web-dev-qa-db-fra.com

Comment fusionner deux rangées dans R?

Je voulais savoir s'il y a une fonction dans laquelle cela m'aidera à fusionner deux rangées. À l'heure actuelle, mes données sont dans la forme suivante

Type de voiturePousserVenteMois
Civique12067Juin
Ville192112Juin

Si possible, j'aimerais que les données prennent cette forme:

Type de voiturePousserVenteMois
Civic + City312179Juin

J'ai essayé la fonction d'agrégat, qui fonctionne, mais elle ne manipule pas l'ensemble du cadre de données.

Toute conduite serait appréciée. Merci!

1
Faseeh Ahmed

Voici une solution dplyr. Il utilise une fonction auxiliaire f pour séparer les cas de vecteurs numériques et de caractères et applique la transformation nécessaire.

library(dplyr)

f <- function(x){
  if(is.numeric(x))
    sum(x)
  else if(any(x[-1] != x[1]))
    paste(x, collapse = "+")
  else x[1]
}

df1 %>%
  group_by(Month) %>%
  summarise(across(everything(), f)) %>%
  relocate(Month, .after = last_col())
## A tibble: 1 x 4
#  Car_Type    Prod  Sale Month
#  <chr>      <int> <int> <chr>
#1 Civic+City   312   179 June 
1
Rui Barradas