首页 > 解决方案 > 如何计算R中逗号分隔的数字字符串的平均值

问题描述

我有以下文件:

文件 1

structure(list(Total_Gene_Symbol = c("5S_rRNA", "7SK", "A1BG-AS1"
), Test = c("1.02, 1.12, 1.11, 1.18, 1.12, 1.19, 1.25, 1.24, 1.24, 1.02", 
"1.97, 2.27, 2.14, 1.15", "1.3, 1.01, 1.36, 1.42, 1.38, 1.01, 1.31, 1.34, 
1.29, 1.34, 2.02, 1.12, 1.01, 1.31, 1.22"
)), .Names = c("Total_Gene_Symbol", "Test"), row.names = c(NA, 
3L), class = "data.frame")

文件 1 列测试是由“,”分隔的数字。

我试过了

mat <- stri_split_fixed(Down_FC, ',', simplify=T)
mat <- `dim<-`(as.numeric(mat), dim(mat))  # convert to numeric and save dims
rowMeans(mat, na.rm=T)->M
View(M)

但上面的代码是平均整个数据。

我想要像下面的文件 2 文件 2 一样的输出

structure(list(Total_Gene_Symbol = c("5S_rRNA", "7SK", "A1BG-AS1"
), Test = c("1.02, 1.12, 1.11, 1.18, 1.12, 1.19, 1.25, 1.24, 1.24, 1.02", 
"1.97, 2.27, 2.14, 1.15", "1.3, 1.01, 1.36, 1.42, 1.38, 1.01, 1.31, 1.34, 
1.29, 1.34, 2.02, 1.12, 1.01, 1.31, 1.22"
), Average = c(11.49, 7.53, 19.44)), .Names = c("Total_Gene_Symbol", 
"Test", "Average"), row.names = c(NA, 3L), class = "data.frame")

标签: r

解决方案


使用apply

d1$sum <- apply(d1,1,
                function(x)(sum(as.numeric(unlist(strsplit(x['Test'],','))),na.rm = TRUE)))

推荐阅读