在R中过滤的奇怪性并显示过滤数据的摘要

时间:2014-03-17 23:43:03

标签: r

我在R中使用CSV库加载了数据框,例如

mySheet <- read.csv("Table.csv", sep=";")

我现在可以在mySheet对象上打印摘要

summary(mySheet)

它将显示每列的摘要,例如,一个名为Diagnose的列具有唯一值RCM,UCM,HCM,它显示每个列的出现次数。

我现在通过诊断过滤,例如

subSheet <- mySheet[mySheet$Diagnose=='UCM',]

这似乎有效,当我在控制台中键入subSheet时,它只打印值与'UCM'匹配的行

但是,如果我对该子表进行总结,例如

summary(subSheet)

它仍然'知道'其他两种可能性RCM和HCM并打印那些值为0.但是,我预计新创建的对象将不知道我最初加载的原始mySheet的可能值。 / p>

过滤后有没有办法摆脱其他可能的值?我也尝试了子集,但这个似乎只是'['用于交互模式的某种快捷方式......我也试过DROP = TRUE作为选项,但这个没有改变游戏。

完全精神紧张:D非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您在阅读csv文件时所处理的是factors。您可以subSheet使用

忘记遗漏的因素
subSheet$Diagnose <- droplevels(subSheet$Diagnose)

subSheet$Diagnose <- subSheet$Diagnose[ , drop=TRUE] 

就在summary(subSheet)之前。

我个人不喜欢因素,因为它们会导致我太多问题,而且我只在需要的时候将字符串转换为因子。所以我会开始使用像

这样的东西
mySheet <- read.csv("Table.csv", sep=";", stringsAsFactors=FALSE)