money_supply <-matrix(c(1,2.25,2.81,2,2.27,2.84,3,2.28,2.86,4,2.29,2.88,5,2.31,2.90,6,2.32,2.92,7,2.35,2.96,8,2.37,2.99,9,2.40,3.02,10,2.42,3.04,11,2.43,3.05,12,2.42,3.05,13,2.44,3.08,14,2.47,3.10,15,2.49,3.10,16,2.51,3.13,17,2.53,3.17,18,2.53,3.18,19,2.54,3.19,20,2.55,3.20),ncol=3,byrow=TRUE)
colnames(money_supply)<-c("Month","M2","M3")
rownames(money_supply)<-c(" ")
money_supply <- as.table(money_supply)
money_supply
money_supply<-as.data.frame(t(money_supply))
这是我的代码,我正在尝试从这些数据创建一个 3x3 表。它以表格的形式弹出,但随后我无法计算数据。我想使用 mean$M2 找到列 M2 的平均值,但它不起作用,错误说 $ 运算符对原子向量无效,所以我将"money_supply"转换为递归向量,但随后我仍然无法计算来自列 M1 和 M2 的数据。谁能帮我解决这个问题?
你要找的东西在R中称为data.frame。
将数据矩阵转换为 data.frame,然后调用mean(money_supply$M2)
:
money_supply <-matrix(c(1,2.25,2.81,2,2.27,2.84,3,2.28,2.86,4,2.29,2.88,5,2.31,2.90,6,2.32,2.92,7,2.35,2.96,8,2.37,2.99,9,2.40,3.02,10,2.42,3.04,11,2.43,3.05,12,2.42,3.05,13,2.44,3.08,14,2.47,3.10,15,2.49,3.10,16,2.51,3.13,17,2.53,3.17,18,2.53,3.18,19,2.54,3.19,20,2.55,3.20),ncol=3,byrow=TRUE)
money_supply <- as.data.frame(money_supply)
colnames(money_supply) <- c("Month", "M2", "M3")
mean(money_supply$M2)
或者,完全跳过矩阵部分:
money_supply <- data.frame(
Month = 1:20,
M2 = seq(2.25, by=0.02, length.out=20),
M3 = seq(2.81, by=0.03, length.out=20)
)
mean(money_supply$M2)
只需尝试一下:M2
是table money_supply
的第二列
mean(money_supply[,2])
输出:
[1] 2.4085
所以你的总代码是:
money_supply <-matrix(c(1,2.25,2.81,2,2.27,2.84,3,2.28,2.86,4,2.29,2.88,5,2.31,2.90,6,2.32,2.92,7,2.35,2.96,8,2.37,2.99,9,2.40,3.02,10,2.42,3.04,11,2.43,3.05,12,2.42,3.05,13,2.44,3.08,14,2.47,3.10,15,2.49,3.10,16,2.51,3.13,17,2.53,3.17,18,2.53,3.18,19,2.54,3.19,20,2.55,3.20),ncol=3,byrow=TRUE)
colnames(money_supply)<-c("Month","M2","M3")
money_supply <- as.table(money_supply)
mean(money_supply[,2])
我不确定这是你想要的,但你可以尝试所谓的apply
函数来获取你的data.frame的摘要(更多内容见?apply
(
money_supply <-matrix(c(1,2.25,2.81,2,2.27,2.84,3,2.28,2.86,4,2.29,2.88,5,2.31,2.90,6,2.32,2.92,7,2.35,2.96,8,2.37,2.99,9,2.40,3.02,10,2.42,3.04,11,2.43,3.05,12,2.42,3.05,13,2.44,3.08,14,2.47,3.10,15,2.49,3.10,16,2.51,3.13,17,2.53,3.17,18,2.53,3.18,19,2.54,3.19,20,2.55,3.20),ncol=3,byrow=TRUE)
colnames(money_supply)<-c("Month","M2","M3")
apply(money_supply[,c(2,3)],MARGIN = 2,FUN = mean) #MARGIN =2 means you are taking your function by columns
M2 M3
2.4085 3.0235