Is it possible to extract/subset a dataframe by indicating only a chunk of the wanted entries-string?
The filter criteria is stored in an factor vector. But there are on
A regex approach:
subset(data, grepl(paste0("^",IDfilter,collapse="|"), ID))
ID sex size
1 0120010 M 7
2 0120020 F 6
3 0121031 F 9
8 0150030 F 11
9 0150110 F 12
11 1150110 F 12
Note: "^" is to match the beginning of the string. I'm assuming there are only digits in your filters.
Something like this?
data <- read.table(header=T, text='
ID sex size
0120010 M 7
0120020 F 6
0121031 F 9
0130010 M 11
0130020 M 11
0130030 F 14
0130040 M 11
0150030 F 11
0150110 F 12
0180030 F 9
1150110 F 12
9180030 F 9
', colClasses =c("character", "factor", "integer"))
IDfilter <- c("012", "015", "115") # filter must be character vector
data[substr(data[,"ID"], 1,3) %in% IDfilter, ]
# ID sex size
#1 0120010 M 7
#2 0120020 F 6
#3 0121031 F 9
#8 0150030 F 11
#9 0150110 F 12
#11 1150110 F 12
Note the colClases. In this case, ID is suppose to be character in order to allow the first number to be 0 as in 0120010 otherwise (if it's numeric or integer) this number would be 120010
Another alternative is
data[substr(data[,"ID"], 1,nchar(IDfilter)[1]) %in% IDfilter, ]
where the third argument of substr is automatically updated to be the number of characters of the first element in IDfileter, the assumption here is that each number in IDfilter has the same number of characters.