Определение, является ли одно поле частично полученным из другого в R - PullRequest
0 голосов
/ 23 ноября 2018

Итак, учитывая шаблон, скажем, две буквы, и положение шаблона, является ли он префиксом, суффиксом или посередине, мне нужно определить, является ли поле частично полученным из другого.Так, например, для следующего набора данных

 data.V1 data.V2
1       GH  GH1001
2       FD  FD2002
3       TH  2345TH
4       ED ED56763
5       US  4345US
6       FG F6736tG

, если LL - это шаблон для первого столбца, где LL в этом случае относится к двум буквамЕсли шаблон для столбца 2 - LL #.Это указывает на то, что положение шаблона - это первые элементы каждого элемента в строке 2. Таким образом, в наборе данных над строками 1,2 и 4 будет подчиняться шаблону.

Я пробовал операторы if then, но они не работали, если шаблон был посередине, # LL #.Я также попробовал функции преобразования, но это не сработало.

1 Ответ

0 голосов
/ 23 ноября 2018
apply(df,1,function(x) grepl(paste0("^",x["data.V1"]),x["data.V2"]))

Для каждой строки (это 1 в применении), она проверит, отображается ли содержимое data.V1 в самом начале data.V2 (^ означает начало строки для регулярных выражений).

Результат:

    1     2     3     4     5     6 
 TRUE  TRUE FALSE  TRUE FALSE FALSE 

Заменить первый аргумент grepl следующим:

End of string: paste0(x["data.V1"],"$")
Middle of string: paste0(".+",x["data.V1"],".+")
After n characters (n defined elsewhere): paste0(".{",n,"}",x["data.V1"])

(для последнего - форма "{n}"означает, что последний символ повторяется n раз. Так как ему предшествует «.», это означает любые n символов.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...