如何将表函数的结果转换为数据框

时间:2018-09-15 13:17:59

标签: r dataframe r-table

df = data.frame(table(train$department , train$outcome)) 

部门和结果都是因素,因此它给了我一个像给定图像中一样的数据框

is_outcome是二进制文件,df看起来像这样

仅包含2个变量(字段),而我希望此Department列成为数据框的一部分,即3个变量的数据框

                         0    1 
Analytics             4840  512
Finance               2330  206 
HR                    2282  136 
Legal                  986   53 
Operations           10325 1023
Procurement           6450  688
R&D                    930   69
Sales & Marketing    15627 1213 
Technology            6370  768 

我学到的一种方法是...

df = data.frame(table(train$department , train$is_outcome))
write.csv(df,"df.csv")
rm(df)
df = read.csv("df.csv")
colnames(df) = c("department", "outcome_0","outcome_1")

但是我无法每次都在程序中保存文件

有什么办法可以直接做到这一点。

1 个答案:

答案 0 :(得分:0)

当您尝试从R中的矩阵创建表时,最终得到了trial.table。对象trial.table看起来与矩阵试验完全相同,但实际上并非如此。当您将这些对象转换为数据框时,区别变得很明显。看一下这段代码的结果:

<img src="..." draggable='false' ondragstart='return false'>

在这里,您将获得一个包含两个变量(病态和健康状态)的数据框,每个观察值有两个。另一方面,如果将表转换为数据框,则会得到以下结果:

   > trial.df <- as.data.frame(trial)
    > str(trial.df)
  ‘data.frame’: 2 obs. of 2 variables:
   $ sick  : num 34 11
    $ healthy: num 9 32

as.data.frame()函数将表格转换为数据框,格式为对计数数据进行回归分析所需的格式。如果需要首先汇总计数,则可以使用table()创建所需的表。

现在您将获得一个包含三个变量的数据框。前两个变量Var1和Var2是因子变量,其水平分别是表的行和列的值。第三个变量Freq包含前两个变量中每个级别组合的频率。

实际上,您还可以通过添加更多变量作为参数,或者使用as.table()将多维数组转换为表,从而在二维上创建表。您可以像处理多维数组一样访问数字,并且as.data.frame()函数创建的要素变量与维度一样多。