根据列的值计算中位数或均值

JM_44

我正在尝试根据列的值计算中位数或均值。

想象以下DF

DF <- data.frame("name", 1:20, 3, 2:5, 0, 8:12)
colnames(DF)<- c("name","sample_1","sample_2", "sample_3", "median_mean", "Frequence")

我想用中位数或每行3个样本的平均值填充“ median_mean”列,具体取决于频率列。如果Freq大于或等于10,则使用中位数,否则,使用均值。

请记住,样本不一定总是3,所以我不能使用列(2:4)。但是它们的名称将始终为sample_X。

有人可以帮我吗?

灾难性故障
DF <- data.frame("name", 1:20, 3, 2:5, 0, 8:12)
colnames(DF)<- c("name","sample_1","sample_2", "sample_3", "median_mean", "Frequence")

DF$median_mean = ifelse(DF$Frequence>=10, apply(DF[grep("sample_", names(DF))], 1L, median), apply(DF[grep("sample_", names(DF))], 1L, mean))

说明

我们使用medianmean将相关列应用到:

  • apply(DF[grep("sample_", names(DF))], 1L, median)

  • apply(DF[grep("sample_", names(DF))], 1L, mean)

但是我们使用三元运算符的矢量化形式仅返回所需的值ifelse

该代码还适用于任意数量的命名列,sample_X因为我们只用来搜索列的名称就可以概括化列的选择grep("sample_", names(DF))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章