我是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
来做到这一点
提前致谢。
答案 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),])
感谢大家的帮助。