0

当我summary()在 R 中使用函数时,它给了我连续数值变量的正确输出,但它没有给我字符变量的频率表。我的同事在相同的数据集上使用相同的代码并获取频率表。我有 R 的最新版本。我该怎么做才能让摘要为我工作?(注意:无论我使用什么数据集,甚至是 R 教程中的数据集,它都不会起作用。)这是我得到的输出:

summary(chem)
#>   plantid            species             deerpr             forest         
#> Length:104         Length:104         Length:104         Length:104        
#> Class :character   Class :character   Class :character   Class :character  
#> Mode  :character   Mode  :character   Mode  :character   Mode  :character  

这是她得到的输出:

summary(chem)
#>    plantid   species       deerpr          forest         
#> B1     : 1   fagr:102   higher:45   baldpate  :34       
#> B10    : 1              lower :57   curlis    :10          
#> B100   : 1                          eames     :13                      
#> B12    : 1                          herrontown:23                   
#> B13    : 1                          rosedale  :22                                            
#> B15    : 1                                                                                   
#> (Other):96                                                                                 
4

2 回答 2

1

我怀疑你们两个得到不同结果的原因是因为从 R 版本开始4.0.0,默认值stringsAsFactors 更改FALSE. 因此,当您从.csv文本文件或其他文本文件中读取数据时,您的数据将作为字符向量加载。相比之下,她的版本小于4.0.0,数据自动转换为 type factor

您可以在使用 读取数据时更改此设置stringsAsFactors = TRUE。例如:

data <- read.csv("data.csv",stringsAsFactors = TRUE)
于 2020-11-26T16:05:45.343 回答
0

如果你这样做:

chem[] <- lapply(chem, as.factor)
summary(chem)

您将得到与您的同事相同的结果。


正如评论中有人建议的那样(由于某种原因,我不再看到该评论),您可能有两个不同的 R 版本,或者无论如何,当您阅读数据时,您会以两种不同的方式进行操作。

因此,对于您的同事,所有字符串都被视为因子,而您将它们保留为字符串。

只需将所有字符变量转换为因子。

如果您有其他不想转换为因子的列,您也可以这样做:

chem <- purrr::modify_if(chem, is.character, as.factor)
于 2020-11-26T16:02:40.430 回答