#r
Вопрос:
Я пытаюсь использовать substr для фильтрации фрейма данных, например, фильтровать фрейм данных по строкам, в которых 3-й столбец помечен буквой «I». попытка, которая(substr(df[,3],1,1)==»Я»), и это не работает. принимая переменную и проверяя substr(var,1,1)==»I», работает.
Ответ №1:
Я не могу повторить вашу проблему. Вот почему важны воспроизводимые данные. Используйте dput(head(df))
для предоставления образца ваших данных.
set.seed(42)
var1 <- sample.int(100, 10)
var2 <- paste0(sample(c("|", ""), 10, replace=TRUE), sample(LETTERS, 10))
dat <- data.frame(var1, var2)
dat
# var1 var2
# 1 49 |D
# 2 65 E
# 3 25 M
# 4 74 Y
# 5 18 T
# 6 100 |B
# 7 47 |H
# 8 24 |C
# 9 71 |A
# 10 89 |J
which(substr(dat[, 2], 1, 1) == "|")
# [1] 1 6 7 8 9 10
which(substr(var2, 1, 1) == "|")
# [1] 1 6 7 8 9 10
which(grepl("^\|", dat[, 2]))
# [1] 1 6 7 8 9 10
Последнее является альтернативным подходом с использованием grepl()
.
Ответ №2:
Вариант с str_detect
library(dplyr)
library(stringr)
df1 %>%
filter(str_detect(col3, fixed("|")))