Kiran Pg
Kiran Pg

Reputation: 43

sums of same string in different row in R

I want calculate of the sum of the same string values. This is my dataset:

trp_str <-  structure(
  list(
    V1 = list(
      c("Hll Wallet Moods Choco 10’s Pic",
        "Hll Wallet Moods Climaxdelay10’spic",
        "Hll Wallet Moods Rose 10’s Pic"), 
      c("Meninokki Duplex", 
        "Santhigiri 450 Ml * 12 Nos Carton", 
        "Santhigiri Dahasanthi Master Carton"), 
      c("BIG CUP UNIT CARTON",
        "Merriboy Big Cup Carton", 
        "Merriboy Party Cup Carton"), 
      c("BIG CUP UNIT CARTON",
        "Merriboy Big Cup Carton",
        "Merriboy Party Cup Carton"), 
      c("Santhigiri 450 Ml * 12 Nos Carton",
        "Santhigiri Dahasanthi Master Carton", 
        "Meninokki Duplex"), 
      c("Hll Wallet Moods Choco 10’s Pic",
        "Hll Wallet Moods Climaxdelay10’spic", 
        "Hll Wallet Moods Rose 10’s Pic")
    ), 
    V2 = list(
      0.0712871287128713, 
      0.0633663366336634, 
      0.0475247524752475, 
      0.0475247524752475, 
      0.0633663366336634, 
      0.0712871287128713
    )
  ), 
  row.names = c(2L, 4L, 8L, 11L, 12L, 13L), 
  class = "data.frame"
)

i want to get like this:

1   Santhigiri 450 Ml * 12 Nos Carton, Santhigiri Dahasanthi Master Carton, Meninokki Duplex 0.14257426
2   Meninokki Duplex, Santhigiri 450 Ml * 12 Nos Carton, Santhigiri Dahasanthi Master Carton  0.06336634
3   BIG CUP UNIT CARTON, Merriboy Big Cup Carton, Merriboy Party Cup Carton 0.0950495
4   Santhigiri 450 Ml * 12 Nos Carton, Santhigiri Dahasanthi Master Carton, Meninokki Duplex  0.06336634

When I use the following function, R throws an error:

trp_str%>% group_by(V1) %>% summarise(Total = sum(V2)) show 

> Error in grouped_df_impl(data, unname(vars), drop) : 
> Column `V1` can't be used as a grouping variable because it's a list

Upvotes: 1

Views: 56

Answers (1)

parkerchad81
parkerchad81

Reputation: 558

You need to convert V1 into a string and convert V2 into a numeric. So, based on your expected answer you can do the following:

 trp_str %>% 
   mutate( V2 = as.numeric(V2), V1 = sapply(V1, function(x) toString(x)) ) %>%
   as_tibble() %>% 
   group_by(V1) %>% 
   summarise(sum = sum(V2))

# A tibble: 4 x 2
  V1                                                                                                      sum
  <chr>                                                                                                 <dbl>
1 BIG CUP UNIT CARTON, Merriboy Big Cup Carton, Merriboy Party Cup Carton                              0.0950
2 Hll Wallet Moods Choco 10’s Pic, Hll Wallet Moods Climaxdelay10’spic, Hll Wallet Moods Rose 10’s Pic 0.143 
3 Meninokki Duplex, Santhigiri 450 Ml * 12 Nos Carton, Santhigiri Dahasanthi Master Carton             0.0634
4 Santhigiri 450 Ml * 12 Nos Carton, Santhigiri Dahasanthi Master Carton, Meninokki Duplex             0.0634

Upvotes: 1

Related Questions