拉出与字符串中第n位匹配的二进制值的行

时间:2018-12-06 07:40:15

标签: r dataframe subset

我有一个数据框,其中我已将第一列转换为二进制标志

即:

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

我想拔出与第3位匹配“ 1”的所有行。

例如。第2、4、5、6和8行

不幸的是,有很多行,而且金额有变化,所以我不能只是对行进行子集化。

2 个答案:

答案 0 :(得分:1)

子字符串并进行比较:

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

答案 1 :(得分:1)

您可以为此使用正则表达式:

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

表达式"^..1"表示您从字符串(^)的开头开始匹配,然后有两位数字可以是任意数字(..),然后第三位数字必须是为1(1)。 grepl返回一个逻辑索引,该逻辑索引在找到匹配项时为true,否则为false。