【问题标题】:Mean of 3 rows in matrix [duplicate]矩阵中3行的平均值[重复]
【发布时间】:2018-04-28 16:02:07
【问题描述】:

我有以下设置的矩阵:

d <- read.table(text='Sample     Target    Value
Sample1    A          NA
Sample1    A          2
Sample1    A          3
Sample2    A          1
Sample2    A          2
Sample2    A          3
Sample1    B          1
Sample1    B          2
Sample1    B          3
Sample2    B          NA
Sample2    B          2
Sample2    B          3',  header=TRUE)

我想对每个数据重复采用Value 列的方法。 所以所有具有Sample=Sample1Target=ASample=Sample2Target=B 的行的平均值等等。

输出应该是这样的矩阵:

result <- read.table(text='Sample     Target    Value
Sample1    A          mean
Sample2    A          mean
Sample1    B          mean
Sample2    B          mean' ,  header=TRUE)

我尝试使用aggregate() 解决此问题,但我不确定如何对其进行编码,因此它保留了SampleTarget 列并忽略NA

谢谢!

【问题讨论】:

  • aggregate(Value ~ Sample + Target, data=d, FUN=mean)
  • dresult 不是 R 矩阵。它们是数据框。
  • 非常感谢!这似乎可以解决问题。我对 R 很陌生,所以我不太熟悉数据框和矩阵之间的区别。但是我遇到了一个问题:在我的原始代码中,NA 在括号中, 这导致所有结果都是 NA 知道为什么会这样吗?
  • 编辑:我称之为矩阵并要求作为数据框的解决方案似乎是一个列表,因为typeof(x) 返回list

标签: r matrix aggregate mean


【解决方案1】:

我认为aggregate 在这种情况下是可以的。试试:

aggregate(d$Value, list(d$Sample, d$Target), mean, na.rm = TRUE)
  Group.1 Group.2   x
1 Sample1       A 2.5
2 Sample2       A 2.0
3 Sample1       B 2.0
4 Sample2       B 2.5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多