【发布时间】:2019-02-12 15:11:25
【问题描述】:
我有一个看起来像这样的矩阵
1 2 8
2 2 9
3 1 10
4 5 10
5 2 12
现在我想在第二列中具有特定值的行的第三列上应用一些函数。因此,例如,我只想考虑第二列中有2 的行。然后我想得到 8,9,12 的均值、中位数和方差。
实际上我的矩阵更大,但这是基本思想。我想我需要一个函数,它首先检查第二列中的值,然后只考虑与给定值对应的第三列的值。我做了这样的东西,但它只适用于平均值,实际上是一种浪费,因为该功能已经内置在 R 中。
看起来是这样的:
average<- function(m){
k=0
for (i in 1:nrow(x)){
if(x[i,2]==m){
k = k + x[i,3]
} else {NULL}
amount <- sum(x[,2]==m)
}
av <- k/amount
return(av)}
【问题讨论】:
-
你能不能转换成数据框然后只使用
dplyr函数?那里会有几个不同的选项......例如filter()或group_by()和summarise()。同样,如果您想学习data.table,这对于您想要的最终结果将很有用。