How to use map from purrr with dplyr::mutate to create multiple new columns based on column pairs

前端 未结 8 706
無奈伤痛
無奈伤痛 2020-12-04 18:34

I have to following issue using R. In short I want to create multiple new columns in a data frame based on calculations of different column pairs in the data frame.

8条回答
  •  被撕碎了的回忆
    2020-12-04 19:30

    In case you like to consider a base R approach, here's how you could do it:

    cbind(df, lapply(split.default(df, substr(names(df), 0,1)), rowSums))
    #  a1 b1 c1 a2 b2 c2  a  b  c
    #1  1  4 10  9  3 15 10  7 25
    #2  2  5 11 10  4 16 12  9 27
    #3  3  6 12 11  5 17 14 11 29
    #4  4  7 13 12  6 18 16 13 31
    #5  5  8 14 13  7 19 18 15 33
    

    It splits the data column-wise into a list, based on the first letter of each column name (either a, b, or c).

    If you have a large number of columns and need to differentiate between all characters except the numbers at the end of each column name, you could modify the approach to:

    cbind(df, lapply(split.default(df, sub("\\d+$", "", names(df))), rowSums))
    

提交回复
热议问题