0

我试图查看向量中的元素是否与第二个向量中元素的前四位数字匹配(它们是嵌套标识符),我不太确定如何运行匹配。例如:

X     Y 
1111  111120
1111  890933
2222  780777
2222  222247

我想创建代码来告诉我向量 y 中元素 i 的前四位数字是否与向量 x 中元素 i 中的数字匹配。扩展示例,我希望看到:

True
False
False
True

感谢您的任何想法。

4

2 回答 2

3

使用apply循环遍历行并使用grepl将起作用......

apply( df , 1 , function(x) grepl( x[1] , x[2] ) )
#[1]  TRUE FALSE FALSE  TRUE
于 2013-10-22T17:11:41.703 回答
3

假设您的 data.frame 是df并且 usingsubstr可以解决问题。

> df$X==as.numeric(substr(df$Y, start=1, stop=4))
[1]  TRUE FALSE FALSE  TRUE

将所有内容放在一个新的data.frame中:

> transform(df, Z=df$X==as.numeric(substr(df$Y, start=1, stop=4)))
     X      Y     Z
1 1111 111120  TRUE
2 1111 890933 FALSE
3 2222 780777 FALSE
4 2222 222247  TRUE

查看?substr有关其工作原理的更多详细信息。

于 2013-10-22T17:11:45.500 回答