r - 数据帧 : How to compare current row to some other rows without looping?

标签 r dataframe

我有以下 df 和用例,我想在所有行中查找并设置一些内容,其中存在另一行满足条件,例如

df <- data.frame(X=c('a','b','c'), Y=c('a','c','d'))
> df
    X   Y
1   a   a
2   b   c
3   c   d

我想在另一行中找到那些Y值与X值相同的行。在上面的示例中,第 2 行为真,因为 Y = c 并且第 3 行有 X = c。请注意,第 1 行不满足条件。

类似于:

df$Flag <- find(df, Y == X_in_another_row(df))

最佳答案

1

对于每个 Y,我们检查 X 中的任何值(除了在同一行中)是否匹配。

sapply(1:NROW(df), function(i) df$Y[i] %in% df$X[-i])
#[1] FALSE  TRUE FALSE

如果需要索引,请将整个内容包装在 which

which(sapply(1:NROW(df), function(i) df$Y[i] %in% df$X[-i]))
#[1] 2

2(未测试好)

df <- data.frame(X=c('a','b','c'), Y=c('a','c','d'), stringsAsFactors = FALSE)
temp = outer(df$X, df$Y, "==")  #Check equality among values of X and Y
diag(temp) = FALSE              #Set diagonal values as FALSE (for same row)
colSums(temp) > 0
#[1] FALSE  TRUE FALSE

关于r - 数据帧 : How to compare current row to some other rows without looping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45723103/

相关文章:

r - 模拟相关伯努利数据

python - 在 Pandas 数据框中获取不同值的最有效方法是什么?

python - 如何从 Pandas 数据框中的时间戳列中删除时区

r - 使用 XLConnect (R) 错误将日期数据导出到 .xlsx 文件?

仅根据前一行删除重复行

R 数据帧过滤

r - 按行合并不同列的数据集

Python Dataframe - 在除第一次出现之外的日期删除重复的 TRUE

python-2.7 - python Pandas : set a value of column based on another value of a column in a list

postgresql - 将 spark 数据框写入 postgres 数据库