sum columns with similar names in R

前端 未结 4 1908
梦谈多话
梦谈多话 2021-01-14 17:02

I\'ve got a dataframe that\'s got lots of columns that are something like this:

data <- data.frame (a.1 = 1:5, a.2b = 3:7, a.5 = 5:9, bt.16 = 4:8, bt.1234         


        
4条回答
  •  情歌与酒
    2021-01-14 17:42

    data <- data.frame (a.1 = 1:5, a.2b = 3:7, a.5 = 5:9, bt.16 = 4:8, bt.12342 = 7:11)
    i <- grepl("a.", names(data), fixed = TRUE)
    result <- data.frame(a=rowSums(data[, i]), bt=rowSums(data[, !i]))
    result
    # > result
    #    a bt
    # 1  9 11
    # 2 12 13
    # 3 15 15
    # 4 18 17
    # 5 21 19
    

    If you have more than two prefixes you can do something like:

    prefs <- c("a.", "bt.")
    as.data.frame(lapply(prefs, function(p) rowSums(data[, grepl(p, names(data), fixed = TRUE)]) ))
    

提交回复
热议问题