Как преобразовать атомный вектор в рекурсивный вектор, где я могу использовать символ "$" в R? - PullRequest
0 голосов
/ 31 августа 2018
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))

Это мой код, я пытаюсь создать таблицу 3х3 из этих данных. Он появляется в виде таблицы, но тогда я не могу вычислить данные. Я хочу найти среднее значение для столбца M2, используя среднее значение $ M2, но оно не работает, ошибка говорит, что оператор $ недопустим для атомарного вектора, поэтому я преобразую «money_supply» в рекурсивный вектор, но тогда я все еще могу не вычислять данные из столбцов M1 и M2. Может кто-нибудь мне в этом поможет?

Ответы [ 3 ]

0 голосов
/ 31 августа 2018

Просто попробуйте это: 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])
0 голосов
/ 31 августа 2018

Я не уверен, что это то, что вам нужно, но вы можете попробовать так называемые 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 
0 голосов
/ 31 августа 2018

То, что вы ищете, называется data.frame в R.

Преобразуйте вашу матрицу данных в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...