r中的子集运算符

时间:2016-04-23 08:44:20

标签: r

R

中的

运算符

我有一个名为newerror的数据集和名为error

的变量
error
-----
normal
normal
speed
active

我想只选择正常且有效的错误。

请参阅下面的代码我试过

subset(newerror, error ==("normal") | ("active"))

但这是错误

  

错误::

中的意外符号

3 个答案:

答案 0 :(得分:1)

你需要

subset(newerror, error =="normal" | error == "active")

subset(newerror, error %in% c("normal", "active"))

答案 1 :(得分:1)

使用方括号在R中进行子集特别有效。

 df <- data.frame(id = c("B", "A", "D", "C"), y = c(6, 8, 1, 5))
 df

  id y
1  B 6
2  A 8
3  D 1
4  C 5

df3  <- df[df$id == "A" | df$id == "B", ]
df3
  id y
1  B 6
2  A 8

条件df[df$id == "A" | df$id == "B", ]后面的逗号表示您指的是数据帧的行。如果逗号在条件之前,则表示您按列索引。

答案 2 :(得分:1)

使用newerror data.frame

error <- c("normal", "abnormal", "normal", "abnormal", "active", "nonactive", "active")
value <- c(2, 4, 1, 5, 3, 2, 7)
newerror <- data.frame(error, value)

您可以使用dplyrfilter

执行此操作
library(dplyr)
dplyr::filter(newerror, error %in% c("normal", "active"))
   error value
1 normal     2
2 normal     1
3 active     3
4 active     7