如何将原子向量转换为递归向量,我可以在其中使用"$"符号?


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)

只需尝试一下:M2table 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 

相关内容

最新更新