2017-09-17 42 views
-1

实施例10.1的表。让血液类型和40的人的性别如下:
(O,男),(O,女),(A,女),(B男),(A,女),(O,女) ,(A,男), (A,发作),(A,女),(O,发作),(B,男),(O,男),B,女),(O,MAL),( O,男), (A,女),(O,发作),(O,MAL),(A,女),(A,女),(A,MAL),(A,男), ( AB,女),(A,女),(B,女),(A,MAL),(A,女),(O,发作),(O,男), (A,女),(O ,MAL),(O,女),(A,女),(A,MAL),(A,MAL),(O,男), (A,发作),(O,女),(O,女),(AB,男)。通过使用SPSS在双向频率表
汇总数据:创建其中R

我可以使用[R这样做呢?

+0

如果你提出一个最小的例子有你想要什么想法这将是容易的。看看'janitor'package。它可能做你的事。 – Edu

+0

基本上我想以量化数据集建立按性别和血型diveded的表。 –

回答

1

请看下面的例子中使用dplyrjanitor

id = rep(1:40) 
gender = sample(c("M", "F"), 40, TRUE) 
blood = sample(c("O", "A"), 40, TRUE) 

df = data.frame(id, gender, blood) 

library(dplyr) 

> df %>% group_by(gender, blood) %>% tally() 
# A tibble: 4 x 3 
# Groups: gender [?] 
    gender blood  n 
    <fctr> <fctr> <int> 
1  F  A 11 
2  F  O  8 
3  M  A  8 
4  M  O 13 

library(janitor) 

df %>% crosstab(gender, blood) 

gender A O 
1  F 11 8 
2  M 8 13 
+1

不忘掉'table':你的第二result'标签< - 与(DF,表(性别,血液))',并且first' data.frame(制表符)' – user20650

0

你应该更可用的形式发表您的数据。如张贴dput(x),其中x输出数据集的名称。大部分的工作是让你张贴在data.frame什么。

x <- "(O,Male),(O,Female),(A,Female),(B,Male),(A,Female),(O,Female),(A,Male), 
     (A,Male),(A,Female),(O,Male),(B,Male),(O,Male),B,Female),(O,Male), 
     (O,Male), (A,Female),(O,Male),(O,Male),(A,Female),(A,Female),(A,Male), 
     (A,Male), (AB,Female),(A,Female),(B,Female),(A,Male),(A,Female), 
     (O,Male),(O,Male), (A,Female),(O,Male),(O,Female),(A,Female),(A,Male), 
     (A,Male),(O,Male), (A,Male),(O,Female),(O,Female),(AB,Male)" 

s <- sub("\\(", "", strsplit(x, "\\),")[[1]]) 
s <- sub("\\)", "", s) 
s <- strsplit(s, ",") 
s <- lapply(s, trimws) 
dat <- as.data.frame(do.call(rbind, s)) 
names(dat) <- c("BloodType", "Sex") 

base R有函数来创建双向表。

xtabs(~ BloodType + Sex, data = dat) 
#   Sex 
#BloodType Female Male 
#  A  10 8 
#  AB  1 1 
#  B  2 2 
#  O  5 11