汇总表

时间:2018-07-28 08:42:16

标签: r summary rscript

我将xlsx文件导入R,该表有很多列,其中一些包含数字,而另一些包含字符。 当我尝试对包含字符的列进行摘要时,得到此

> Length     Class      Mode  
>       287 character character

而我的专栏是这样的:

yes
no
no
yes

我想要这个:

yes:2
no: 2

我试图将表另存为数据框,但没有用,并且我也尝试将其另存为表,但出现“表不可强制”的情况。

有什么想法吗?谢谢:)

1 个答案:

答案 0 :(得分:0)

如果要输出summary,则必须将字符列转换为 factors

考虑一个带有字符列的数据框:

iris2 <- iris
iris2$Species <- as.character(iris2$Species)

然后您会得到以下有害输出:

> summary(iris2)
  Sepal.Length   Sepal.Width    Petal.Length   Petal.Width    Species         
 Min.   :4.30   Min.   :2.00   Min.   :1.00   Min.   :0.1   Length:150        
 1st Qu.:5.10   1st Qu.:2.80   1st Qu.:1.60   1st Qu.:0.3   Class :character  
 Median :5.80   Median :3.00   Median :4.35   Median :1.3   Mode  :character  
 Mean   :5.84   Mean   :3.06   Mean   :3.76   Mean   :1.2                     
 3rd Qu.:6.40   3rd Qu.:3.30   3rd Qu.:5.10   3rd Qu.:1.8                     
 Max.   :7.90   Max.   :4.40   Max.   :6.90   Max.   :2.5 

要将所有字符列转换为因子,map_if包的purrr函数很方便:

library(purrr)
iris3 <- as.data.frame(map_if(iris2, is.character, as.factor))

然后:

> summary(iris3)
  Sepal.Length   Sepal.Width    Petal.Length   Petal.Width        Species  
 Min.   :4.30   Min.   :2.00   Min.   :1.00   Min.   :0.1   setosa    :50  
 1st Qu.:5.10   1st Qu.:2.80   1st Qu.:1.60   1st Qu.:0.3   versicolor:50  
 Median :5.80   Median :3.00   Median :4.35   Median :1.3   virginica :50  
 Mean   :5.84   Mean   :3.06   Mean   :3.76   Mean   :1.2                  
 3rd Qu.:6.40   3rd Qu.:3.30   3rd Qu.:5.10   3rd Qu.:1.8                  
 Max.   :7.90   Max.   :4.40   Max.   :6.90   Max.   :2.5 
相关问题