在数据框中删除带有某些NA值的特定行。
问题:如何从一个数据框中删除某些具有NA值的行?
解决方法之一是使用data.table包。我们将数据框转换为data.table(setDT(df)),然后根据'ID'和'DAY'进行分组。通过找到满足条件(sum(is.na(VAL))!= .N & is.na(VAL))的'VAL'的行索引(.I),并将该行索引从数据集'df'中删除。sum(is.na(VAL))!= .N 返回一个逻辑向量,检查组中NA值的数量是否不等于该组的行数(.N)。如果'VAL'与前述条件一起是NA,那么该行也将被删除。
另一种类似的方法是使用dplyr包。我们根据'ID'和'DAY'进行分组,然后使用filter函数与上述条件一起使用。
这两种方法为什么会返回不同的结果?
因为在dplyr代码中存在一个小错误。正确的代码应该是:df %>% group_by(ID, DAY) %>% filter(!(sum(is.na(VAL))!=n() & is.na(VAL)))
感谢你的评论,我没有注意到这个错误。