Рассчитать среднее значение разделенной запятыми строки чисел
У меня есть столбец в моем dataframe, который состоит из строк чисел, разделенных запятыми. Я хотел бы преобразовать строку в список чисел, а затем получить среднее значение. Мой фрейм данных, df
:
a3
1,5,2
103.1
34,6
Сначала я преобразовал строку в список:
> df$a3_list <- strsplit(as.character(df$a3), split = ',')
новый df
:
a3 a3_list
1,5,2 c("1", "5", "2")
103.1 103.1
34,6 c("34", "6")
На данный момент, однако, я не уверен, как получить новый столбец, содержащий среднее значение каждой ячейки в df$a3_list
2 ответа
Решение
Ты можешь использовать stringi
, это быстро
library(stringi)
mat <- stri_split_fixed(df$a3, ',', simplify=T)
mat <- `dim<-`(as.numeric(mat), dim(mat)) # convert to numeric and save dims
rowMeans(mat, na.rm=T)
# [1] 2.666667 103.100000 20.000000
или с Base R
sapply(strsplit(as.character(df$a3), ",", fixed=T), function(x) mean(as.numeric(x)))
Другая base R
вариант
rowMeans(read.table(text=df$a3, sep=",", fill=TRUE), na.rm=TRUE)
#[1] 2.666667 103.100000 20.000000
ПРИМЕЧАНИЕ. Предполагая, что "a3" character
учебный класс. В противном случае оберните as.character(df$a3)
данные
df <- structure(list(a3 = c("1,5,2", "103.1", "34,6")), .Names = "a3",
class = "data.frame", row.names = c(NA, -3L))