我有以下数据:
Animal Father Weight
1 John 55
2 John 60
3 Bruce 55
4 Peter 66
5 Sand 35
6 Sand 45
7 Loki 35
8 Loki 35
我想删除Father
列仅出现一次的所有行。为此,我执行了以下操作:
New.dt= dt[!table(dt$Father)[dt$Father] <= 1, ]
好的,它工作得很好:
Animal Father Weight
1 John 55
2 John 60
5 Sand 35
6 Sand 45
7 Loki 35
8 Loki 35
但是当我为新的dataset(New.dt)
做一些统计时,有关已删除父亲的信息仍然保留。像这样:
summary(New.dt$Father)
John Bruce Peter Sand Loki
2 0 0 2 2
这是所有统计信息,但我不想使用此幻象信息。如何排除这些信息?
答案 0 :(得分:3)
问题在于列Father
的类型为factor
。
如果先将其转换为字符,就不会遇到以下问题:
dt$Father <- as.character(dt$Father)
New.dt= dt[!table(dt$Father)[dt$Father] <= 1,]
summary(New.dt$Father)
您可以从一开始就避免使用factor
:
如果您使用data.frame
创建数据,则可以设置stringsAsFactor = FALSE
。
如果您使用read.table
从csv文件(或类似文件)中读取文件,则还可以设置stringsAsFactor = F
。