如何将过滤器应用于我的数据框并且仅选择前100行?
通过两次操作,我可以这样做:
df1 = df[ 1:100, ]
df2 = [ grep('requiredvalue', df1$var) ]
问题:如何在一次操作中执行此操作,例如:类似的东西:
df1 = df[ 1:100, grep('somevalue', df$var) ]
答案 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)