R: split string into numeric and return the mean as a new column in a data frame

后端 未结 3 1567
予麋鹿
予麋鹿 2020-12-11 08:38

I have a large data frame with columns that are a character string of numbers such as \"1, 2, 3, 4\". I wish to add a new column that is the average of these numbers. I have

3条回答
  •  粉色の甜心
    2020-12-11 09:32

    library(data.table)
    cols <- paste0("a",1:4)
    setDT(df)[, (cols) := tstrsplit(a, ",", fixed=TRUE, type.convert=TRUE)
            ][, .(Mean = rowMeans(.SD)), .SDcols = cols]
       Mean
    1:  2.5
    2:  5.0
    3:  7.5
    

    Alternatively,

    rowMeans(setDT(tstrsplit(df$a, ",", fixed=TRUE, type.convert=TRUE)))
    # [1] 2.5 5.0 7.5
    

提交回复
热议问题