Как ввести данные напрямую, чтобы сделать data.frame, представляющий таблицу сопряженности?
Я пытаюсь напрямую ввести следующие данные в R (которая представляет собой таблицу непредвиденных обстоятельств)
Area School Coffeshop Hospitals Parks Totatl
Washington 142 120 20 20 302
Seattle 120 140 30 40 330
Total 262 260 50 60 632
Мой код такой:
n<-c("Area","School","Cofeeshop","Hospitals","Parks","Total")
x<-c("Washington",142,120,20,20,302)
y<-c("Seattle",120,140,30,40,330)
z<-c("Total",262,260,50,60,631)
data<-cbind(n,x,y,z)
data<-data.frame(data)
2 ответа
Решение
Ваш код полон основных синтаксических ошибок, попробуйте скопировать и вставить непосредственно из сценария, который вы используете. (Я действительно надеюсь, что вы не сделали этого здесь).
Если вы объедините символьные и числовые переменные в одном и том же векторе, это создаст символьный вектор, а это не то, что вам нужно.
Попробуйте что-то вроде
vec_names <-c("School", "Cofeeshop", "Hospitals", "Parks", "Total")
Washington <- c(142, 120, 20, 20, 302)
Seattle<-c(120, 140, 30, 40, 330)
Total <- c(262, 260, 50, 60, 631)
ctable <- rbind(Washington, Seattle, Total)
colnames(ctable) <- vec_names
# ctable is a matrix at the moment, with the rownames identifying
# Washington etc
ctable_df <- data.frame(ctable)
# ctable_df is now a data.frame.
# if you want area as a column in your data.frame (not just row.names)
CTABLE <- data.frame(area= rownames(ctable_df), ctable_df, row.names = NULL)
CTABLE
area School Cofeeshop Hospitals Parks Total
1 Washington 142 120 20 20 302
2 Seattle 120 140 30 40 330
3 Total 262 260 50 60 631
Использование Tribble от Tidyverse (подробнее см. Tidyverse Tibble)
install.packages("tidyverse")
library(tidyverse)
ctable <-
tribble(
~Area, ~School, ~Coffeeshop, ~Hospitals, ~Parks, ~Total,
"Washington", 142, 120, 20, 20, 302,
"Seattle", 120, 140, 30, 40, 330,
"Total", 262, 260, 50, 60, 631
)
ctable
# A tibble: 3 x 6
Area School Coffeeshop Hospitals Parks Total
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 Washington 142 120 20 20 302
2 Seattle 120 140 30 40 330
3 Total 262 260 50 60 631