SAS中删除的R等价物是多少?

时间:2014-01-27 02:54:35

标签: r

我是R的新手。我想在管理我的数据时使用相当于删除的sas。 在sas中,每当我想要删除满足条件的数据的一部分时,我只需键入If var=value then delete我想在R语句中尝试x = 40和y = 50然后删除。

比方说我在SAS中有这个数据集。

dataname a;
x  y
40 55
45 50
40 50
40 45
45 40

我只需要删除满足条件x = 40和y = 50的R格式的行。

在sas中,我可以通过if x=40 and y=50 then delete来做到这一点 提前致谢。

3 个答案:

答案 0 :(得分:2)

一般来说:

对象的

rm() 文件unlink()

要删除列表或列表成员,请将其设置为NULL 要删除行,请选择执行所需的行,然后将其分配回相同的对象名称,如下所示:

# Assuming want to keep only those rows were x is 40 and y is 50
DF <- DF[DF$x == 40 & DF$y == 50, ]

答案 1 :(得分:2)

如果您的数据位于DF,则此处是一个返回没有这些行的新对象的表达式:

with(DF, DF[!(x==40 & y==50),])

将其重新分配给DF(使用<-)以“删除”行。

以下是一个例子:

(DF <- structure(list(x = c(40L, 45L, 40L, 40L, 45L), y = c(55L, 50L, 
      50L, 45L, 40L)), .Names = c("x", "y"), class = "data.frame", row.names = c(NA, 
      -5L)))
##    x  y
## 1 40 55
## 2 45 50
## 3 40 50
## 4 40 45
## 5 45 40

这是一个没有被拒绝的行的对象:

with(DF, DF[!(x==40 & y==50),])
##    x  y
## 1 40 55
## 2 45 50
## 4 40 45
## 5 45 40

第3行未被退回。

答案 2 :(得分:0)

这个有用了!

DF <- subset(DF, !(x==40 & y==50))

另一种方法是DF<-with(DF, DF[!(x==40 & y==50),])

感谢大家的帮助。