Как ввести данные напрямую, чтобы сделать 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
Другие вопросы по тегам