WeiRd:R没有找到价值,但它只是在那里

时间:2014-09-19 08:08:45

标签: r merge which

尝试使用名为hash_id的变量合并两个数据帧。由于某种原因,R不识别其中一个数据帧中的hash-id,而另一个则识别另一个。

我已经检查过,但我还是没有得到它。请参阅下面我的检查方式:

> head(df1[46],1) # so I take the first 'hash-id' from df1
#    hash_id
# 1 abab123123

> which(df2 == "abab123123", arr.ind=TRUE) # here it shows that row 6847 contains a match
#      row col
# [1,] 6847  32`

> which(df1 == "abab123123", arr.ind=TRUE) # and here there is NO matching value!
#     row col
# 

1 个答案:

答案 0 :(得分:1)

其中一个数据集的相关列中有trailingleading个空格。你可以这样做:

library(stringr)
df1[, "hash_id"] <- str_trim(df1[,"hash_id"])
df2[, "hash_id"] <- str_trim(df2[, "hash_id"])

which(df1[, "hash_id"]=="abab123123", arr.ind=TRUE)
which(df2[, "hash_id"]=="abab123123", arr.ind=TRUE)

另一种方法是使用grep

grepl("\\babab123123\\b", df1[,"hash_id"])
grepl("\\babab123123\\b", df2[,"hash_id"])