我在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非常感谢任何帮助!
答案 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)