我试图在r中使用表函数来创建列联表。但是我没有列联表,而是获得了值(而不是表格),两个列表。
我的数据有15000个观察值和2个变量。数据如下所示:
**Field.Label** |**Form.Name**
------------------------------------|---------------
Applicant Name |F1
------------------------------------|---------------
Phone |F1
------------------------------------|---------------
Address |F1
------------------------------------|---------------
Phone |F2
------------------------------------|---------------
Address |F2
------------------------------------|---------------
Title |F2
------------------------------------|---------------
Phone |F3
------------------------------------|---------------
... |...
我使用了以下代码:
CTable<-table(mydata$Field.Label, mydata$Form.Name)
CTable<-as.data.frame(CTable)
View(CTable)
得到的结果是1,665,495个条目(Field.Label有8,541个级别,Form.Name有195个级别.8,541 * 195 = 1,665,495):
** Field.Label** |** Form.Name** |**Freq**
------------------------------------|---------------|-----------
Applicant Name |F1 |1
------------------------------------|---------------|-----------
Phone |F1 |1
------------------------------------|---------------|-----------
Address |F1 |1
------------------------------------|---------------|-----------
Title |F1 |0
------------------------------------|---------------|-----------
Applicant Name |F2 |0
------------------------------------|---------------|-----------
Phone |F2 |1
------------------------------------|---------------|-----------
Address |F2 |1
------------------------------------|---------------|-----------
Title |F2 |1
------------------------------------|---------------|-----------
Applicant Name |F3 |0
------------------------------------|---------------|-----------
Phone |F3 |1
------------------------------------|---------------|-----------
Address |F3 |0
------------------------------------|---------------|-----------
Title |F3 |0
------------------------------------|---------------|-----------
... |...
如何获得列联表的结果如下?
|**F1** |**F2** |**F3** |
------------------------------------|-------|-------|-------|
Applicant Name | 1 |0 |0 |
------------------------------------|-------|-------|-------|
Phone | 1 |1 |1 |
------------------------------------|-------|-------|-------|
Address | 1 |1 |0 |
------------------------------------|-------|-------|-------|
Title | 0 |1 |0 |
------------------------------------|-------|-------|-------|
谢谢!
答案 0 :(得分:1)
Data.Table解决方案:
library("data.table")
mydata <- fread('Field.Label,Form.Name
Applicant,F1
Phone,F1
Address,F1
Phone,F2
Address,F2
Title,F2
Phone,F3')
CTable <- dcast(setDT(mydata), Field.Label ~ Form.Name, fun = length)
CTable
# Field.Label F1 F2 F3
# 1: Address 1 1 0
# 2: Applicant 1 0 0
# 3: Phone 1 1 1
# 4: Title 0 1 0
class(CTable)
# [1] "data.table" "data.frame"
基地R解决方案:
CTable <- table(mydata$Field.Label, mydata$Form.Name)
CTable <- data.frame(matrix(CTable, nrow = dim(CTable)[1], dimnames = dimnames(CTable)))
CTable
# F1 F2 F3
# Address 1 1 0
# Applicant 1 0 0
# Phone 1 1 1
# Title 0 1 0
class(CTable)
# [1] "data.frame"