R删除包含特定值的行

时间:2012-11-19 13:02:15

标签: r dataframe

所以它有一个csv我正在读入一个R数据帧,它看起来像这样

clientx,clienty,screenx,screeny
481,855,481,847
481,784,481,847
481,784,481,847
879,292,879,355

第一行当然是标题。所以我们有4列数字数据,范围从1到4位。除了-1之外,集合中没有负数表示缺失值。 我想删除4列中任何一列中包含-1的每一行。

提前感谢您的帮助

2 个答案:

答案 0 :(得分:9)

最有效的方法是使用na.strings的{​​{1}}参数将所有read.csv()值编码为-1,然后删除不完整的案例。


第1步:NA中设置na.strings=-1

read.csv()

第2步:现在使用x <- read.csv(text=" clientx,clienty,screenx,screeny 481,855,481,847 481,784,481,847 481,784,481,847 -1,292,879,355", header=TRUE, na.strings=-1) x clientx clienty screenx screeny 1 481 855 481 847 2 481 784 481 847 3 481 784 481 847 4 NA 292 879 355 complete.cases

na.omit

答案 1 :(得分:8)

直接的方式:

df <- df[!apply(df, 1, function(x) {any(x == -1)}),]

更新:如果data.frame包含字符列,则此方法将失败,因为apply隐式地将data.frame转换为矩阵(其中只包含一种类型的数据),并且字符类型优先于数字类型,因此数据。帧将被转换为字符矩阵。

或者用NA替换-1,然后使用na.omit

df[df==-1] <- NA
df <- na.omit(df)

这些应该有效,我没有检查。请始终尝试提供可重现的示例来说明您的问题。