免责声明:我是一名R noob。
我有一个数据框,我想根据列值删除行。例如,在以下示例中,我想删除col3中包含“C”的行。
> df <- data.frame(col1=c(1,2,3,4),col2=c(5,6,7,8),col3=c('A','B','C','D'))
> df
col1 col2 col3
1 1 5 A
2 2 6 B
3 3 7 C
4 4 8 D
我发现这可以通过subset()函数完成。
> subdf <- subset(df,col3 != 'B')
> subdf
col1 col2 col3
1 1 5 A
3 3 7 C
4 4 8 D
到目前为止一切顺利。然而,当我从这样的子集(这是我的真实数据的最终目标)绘制数据时,我感到惊讶的是,尽管对于创建的子集完全没有,但仍然考虑'B'值。使用summary()函数时也可以观察到这一点。 'B'仍在那里,但频率为零:
> summary(subdf$col3)
A B C D
1 0 1 1
我知道这肯定是预期的行为。因此,我想知道是否有任何方法可以将子集与原始数据帧“取消链接”?或者是否有另一种方法来创建一个可以返回一个新的独立数据框的子集?
我也试过df[df['col3']!='B',]
,但它有相同的行为(我相信这是完全可以预测的)。