R 如何在不同表单之间转换数据?

R 如何在不同表单之间转换数据?,r,R,Data1是web上的一个, 当我得到数据1时,我如何得到表(命名为data2),如下所示: , , Age = Child, Survived = No Sex Class Male Female 1st 0 0 2nd 0 0 3rd 35 17 Crew 0 0 当我有如下数据2时: ,年龄=儿童,存活=否 Sex Class Male Female 1

Data1是web上的一个,

当我得到数据1时,我如何得到表(命名为data2),如下所示:

, , Age = Child, Survived = No

      Sex
Class  Male Female
  1st     0      0
  2nd     0      0
  3rd    35     17
  Crew    0      0
当我有如下数据2时: ,年龄=儿童,存活=否

      Sex    
Class  Male Female    
  1st     0      0    
  2nd     0      0    
  3rd    35     17    
  Crew    0      0    

, , Age = Adult, Survived = No    

      Sex    
Class  Male Female    
  1st   118      4    
  2nd   154     13    
  3rd   387     89    
  Crew  670      3    

, , Age = Child, Survived = Yes    

      Sex    
Class  Male Female    
  1st     5      1    
  2nd    11     13    
  3rd    13     14    
  Crew    0      0    

, , Age = Adult, Survived = Yes    

      Sex    
Class  Male Female    
  1st    57    140    
  2nd    14     80    
  3rd    75     76    
  Crew  192     20    
如何将数据2转换为数据1

1.将数据1转换为数据2
我可以做部分工作

url <- 'http://stats.math.uni-augsburg.de/Mondrian/Data/Titanic.txt'
data <- read.table(url,T)
data[data$Age=="Child" & data$Survived =="No",][,c(1,3)]
数据不是我想要的。

泰坦尼克号是一个“表格”对象,因此您需要对其进行一点探索,以了解您所看到的内容:

> str(Titanic)
 table [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 ...
 - attr(*, "dimnames")=List of 4
  ..$ Class   : chr [1:4] "1st" "2nd" "3rd" "Crew"
  ..$ Sex     : chr [1:2] "Male" "Female"
  ..$ Age     : chr [1:2] "Child" "Adult"
  ..$ Survived: chr [1:2] "No" "Yes"
> dim(Titanic)
[1] 4 2 2 2
> dimnames(Titanic)
$Class
[1] "1st"  "2nd"  "3rd"  "Crew"

$Sex
[1] "Male"   "Female"

$Age
[1] "Child" "Adult"

$Survived
[1] "No"  "Yes"
使用这些
dim
s和
dimnames
提取所需的表格部分:

> Titanic[,,'Child','No']
      Sex
Class  Male Female
  1st     0      0
  2nd     0      0
  3rd    35     17
  Crew    0      0
对于从web加载的数据,只需将最后一行代码包装到
表中

table(data[data$Age=="Child" & data$Survived =="No",][,c(1,3)])

也许我误解了你的问题,但你似乎想知道如何指定多维表格中所列内容的顺序

如果是这种情况,请尝试以下操作(第一行,第二列,第三维度(年龄),第四维度(存活)):

将重新创建的数据的
摘要
与原始数据的
摘要
进行比较:

summary(X)
#     Class         Sex          Age       Survived  
#  Crew  :885   Female: 470   Adult:2092   No :1490  
#  First :325   Male  :1731   Child: 109   Yes: 711  
#  Second:285                                        
#  Third :706  
summary(data)
#     Class        Age           Sex       Survived  
#  Crew  :885   Adult:2092   Female: 470   No :1490  
#  First :325   Child: 109   Male  :1731   Yes: 711  
#  Second:285                                        
#  Third :706   

再说一次,我是在黑暗中拍摄的,因为你的问题不是很清楚。对不起

你知道泰坦尼克号自动包含在R中,对吗?因此,无需从url读取它…我只想学习R的知识来转换数据。将
quote=FALSE
放入
write.csv
调用中以消除结果文件中的引号。您可以从泰坦尼克号获得泰坦尼克号的子数据,如何从csv文件中获取泰坦尼克号表格?如何从泰坦尼克号表格中获取csv文件?如上所述,
Titanic
已在R中。只需在控制台中键入
Titanic
。查看
write.csv
以将其写入csv文件。@这是一本书,与您要做的是一致的吗?
data2 <- table(data[c("Class", "Sex", "Age", "Survived")]) 
## table(data[c(1, 3, 2, 4)])
data2
# , , Age = Adult, Survived = No
# 
#         Sex
# Class    Female Male
#   Crew        3  670
#   First       4  118
#   Second     13  154
#   Third      89  387
# 
# <<SNIP>>
#
#
# , , Age = Child, Survived = Yes
# 
#         Sex
# Class    Female Male
#   Crew        0    0
#   First       1    5
#   Second     13   11
#   Third      14   13
X <- data.frame(data2)
X <- X[rep(rownames(X), X$Freq), -length(X)]
summary(X)
#     Class         Sex          Age       Survived  
#  Crew  :885   Female: 470   Adult:2092   No :1490  
#  First :325   Male  :1731   Child: 109   Yes: 711  
#  Second:285                                        
#  Third :706  
summary(data)
#     Class        Age           Sex       Survived  
#  Crew  :885   Adult:2092   Female: 470   No :1490  
#  First :325   Child: 109   Male  :1731   Yes: 711  
#  Second:285                                        
#  Third :706