我有很大的matirx与folowing结构。我只想创建新的矩阵。 但我不知道如何在R中实现它会有人帮我实现它吗?
我的矩阵:
a b c
[1,] "10" "m" "MIT1"
[2,] "15" "m" "MIT1"
[3,] "20" "s" "MIT2"
[4,] "30" "m" "MIT2"
[5,] "40" "p" "MIT4"
[6,] "50" "m" "MIT4"
[7,] "60" "m" "MIT4"
[8,] "65" "m" "MIT4"
[9,] "70" "m" "MIT4"
>
我的新matirx应该会产生以下规则:
对于 c 列中的每个ID,如果 b 列中的相应坐标为 m,将列中的所有相应坐标相加> a 并将其放入新矩阵中。
上述矩阵的预期输出为:
> H
a b c
q "25" "m" "MIT1"
w "30" "m" "MIT2"
e "255" "m" "MIT4"
答案 0 :(得分:1)
此处更容易转换为data.frame
。 M
是原始矩阵。
> library(plyr)
> D <- data.frame(M, stringsAsFactors = FALSE)
> ddply(D[D$b == 'm',], .(c, b), summarize, sum = sum(as.numeric(a)))
c b sum
1 MIT1 m 25
2 MIT2 m 30
3 MIT4 m 245