同时过滤和限制数据帧行

时间:2014-12-03 13:53:54

标签: r

如何将过滤器应用于我的数据框并且仅选择前100行?

通过两次操作,我可以这样做:

 df1 = df[ 1:100, ]
 df2 =  [ grep('requiredvalue', df1$var) ]

问题:如何在一次操作中执行此操作,例如:类似的东西:

 df1 = df[ 1:100, grep('somevalue', df$var) ]

3 个答案:

答案 0 :(得分:1)

您可以使用:

df[1:100, ][grep('somevalue', df$var[1:100]), ]

或:

subset(df[1:100, ], grepl('somevalue', var))

答案 1 :(得分:1)

使用dplyr

library(dplyr)
filter(df1, (row_number() %in% 1:100) & grepl('somevalue', var))

使用示例

filter(df1, (row_number() %in% 1:20) & grepl('A', var))
#   var       val
#1   A -4.469564
#2   A  0.369045
#3   A -1.822190

或使用base R

 df1[1:nrow(df1)%in% 1:20  & grepl('A', df1$var),]
 #   var       val
 #17   A -4.469564
 #18   A  0.369045
 #20   A -1.822190

数据

set.seed(24)
df1 <- data.frame(var=sample(LETTERS[1:5], 40, replace=TRUE), val=rnorm(40))

答案 2 :(得分:-1)

你也可以:

创建虚拟数据,

df = data.frame(v1=c("a", "b", "c"), v2=rnorm(3000))

仅选择第一列中带有b的那些行。

head(df[df$v1=="b",], 100)