【问题标题】:How to enter data directly to make a data.frame representing a contingency table?如何直接输入数据以制作表示列联表的data.frame?
【发布时间】:2012-10-19 08:44:57
【问题描述】:

我正在尝试将以下数据直接输入到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)

【问题讨论】:

  • @Joran 它在 R 2.15.2 版本中:P
  • 哎呀。错字。应该是“数据
  • 从煎锅里出来...
  • @TylerRinker 不确定这是否是不给糖就捣蛋。
  • @Marine 变暖了。 data.frame 我投票决定关闭,因为这是打字错误或对开始的 R 缺乏熟悉。这 Intro to R 在我刚开始时对我很有帮助。

标签: r contingency


【解决方案1】:

您的代码充满了基本的语法错误,请尝试直接从您正在使用的脚本中复制和粘贴。 (我真的希望你没有在这里这样做)。

如果你在同一个向量中组合字符和数值变量,它会创建一个字符向量,这不是你想要的。

试试类似的东西

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

【讨论】:

    【解决方案2】:

    使用 tidyverse 中的 tribble (详情请参阅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
    

    【讨论】:

    • 酷!不知道 tribble() - 并且需要它!完美。
    • 与 uncount() 一起 - 整理数据。我的生活现在已经完成了。
    猜你喜欢
    • 1970-01-01
    • 2017-01-08
    • 2014-10-27
    • 2014-09-08
    • 2021-06-01
    • 2016-12-24
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    相关资源
    最近更新 更多