calculate row sum and product in data.frame

后端 未结 4 1977
一整个雨季
一整个雨季 2020-12-18 23:39

I would like to append a columns to my data.frame in R that contain row sums and products Consider following data frame

x    y     z
1    2     3
2    3             


        
4条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-18 23:53

    Another approach.

    require(data.table)
    
    # Create data
    dt <- data.table(x = c(1,2,5), y = c(2,3,1), z = c(3,4,2))
    
    # Create index
    dt[, i := .I]
    
    # Compute sum and prod
    dt[, sum := sum(x, y, z), by = i]
    dt[, prod := prod(x, y, z), by = i]
    dt
    
    
    # Compute sum and prod using .SD
    dt[, c("sum", "prod") := NULL]
    dt
    dt[, sum := sum(.SD), by = i, .SDcols = c("x", "y", "z")]
    dt[, prod := prod(.SD), by = i, .SDcols = c("x", "y", "z")]
    dt
    
    
    # Compute sum and prod using .SD and list
    dt[, c("sum", "prod") := NULL]
    dt
    dt[, c("sum", "prod") := list(sum(.SD), prod(.SD)), by = i,
       .SDcols = c("x", "y", "z")]
    dt
    
    
    # Compute sum and prod using .SD and lapply
    dt[, c("sum", "prod") := NULL]
    dt
    dt[, c("sum", "prod") := lapply(list(sum, prod), do.call, .SD), by = i,
       .SDcols = c("x", "y", "z")]
    dt
    

提交回复
热议问题