Вытянуть строки, соответствующие двоичному значению на n-м месте в строке - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть фрейм данных, в котором я преобразовал первый столбец в двоичные флаги

, то есть:

1. 1000 
2. 0010 
3. 0100 
4. 0110 
5. 0010 
6. 1010 
7. 0001 
8. 0011

Я хотел бы вытащить все строки, соответствующие «1»на 3-м месте.

например.строки 2, 4, 5, 6 и 8

К сожалению, есть много строк, и количество изменяется, поэтому я не могу просто подмножество строк.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Для этого можно использовать регулярное выражение:

df[grepl("^..1", df$V1),]
#     V1
#1: 0010
#2: 0110
#3: 0010
#4: 1010
#5: 0011

Выражение "^..1" означает, что вы начинаете сопоставление в начале строки (^), тогда у вас есть две цифры, которые могут бытьчто-нибудь (..), а затем третья цифра должна быть 1 (1).grepl возвращает логический индекс, который имеет значение true, когда совпадение найдено, и false в противном случае.

0 голосов
/ 06 декабря 2018

Подстрока и сравнение:

myDataFiltered <- myData[ substr(myData$myCol, start = 3, stop = 3) == "1", ]
...