0

I have a big data frame.

I want to combine row content which with same type pattern, and use "/" symbol separate contents.

For example:

df>
   type  function
    A    cleaning
    A    improve chemical reaction
    A    reduce scratch
    B    improve planarization
    B    improve slurry distribution
    C    cleaning
    C    improve slurry distribution
    D    reduce scratch

I want df transfer to:

df_transfer>

      type  function
       A    cleaning/improve chemical reaction/reduce scratch 
       B    improve planarization/improve slurry distribution
       C    cleaning/improve slurry distribution
       D    reduce scratch
Eva
  • 483
  • 1
  • 4
  • 13

2 Answers2

4

This example should help:

df = data.frame(type = c("A","A","A","B","B"),
                fun = c("cleaning", "improve chemical reaction", "reduce scratch",
                        "improve planarization", "improve slurry distribution"),
                stringsAsFactors = F)

library(dplyr)

df %>%
  group_by(type) %>%
  summarise(fun = paste0(fun, collapse = "/"))

# # A tibble: 2 x 2
#    type                                               fun
#   <chr>                                             <chr>
# 1     A cleaning/improve chemical reaction/reduce scratch
# 2     B improve planarization/improve slurry distribution

I'd suggest you change your column name to something different than function to avoid any unnecessary conflicts with the function command.

AntoniosK
  • 15,991
  • 2
  • 19
  • 32
0
x <- c("A","A","A","B","B","C","C","D")
y <- c("cleaning","improve chemical reaction"," reduce scratch"," improve planarization","improve slurry distribution"," cleaning"," improve slurry distribution","reduce scratch")
df <- data.frame(x,y)

this should do the trick:

    df %>% dplyr::select(x, y) %>% 
dplyr::group_by(x) %>%  
dplyr::summarise(y=y %>% 
paste(collapse = " / ")) -> df_transfer
Dan
  • 515
  • 6
  • 20