在data.frame列中查找第一个值[R]

dreww2

我正在尝试将一列的值与其他几列进行匹配,并创建一个逻辑矩阵,该矩阵包含FIRST匹配为TRUE以及所有其他值为FALSE。

例如,使用以下数据:

var1 <- c("bush", "tree", "tree", "rock")
var2 <- c("tree", "bush", "rock", "rock")
var3 <- c("rock", "tree", "tree", "rock")
var4 <- c("rock", "tree", "tree", "tree")
var5 <- c("bush", "bush", "rock", "tree")

search_term <- c("tree", "tree", "bush", "tree")

df <- data.frame(var1, var2, var3, var4, var5, search_term, stringsAsFactors = FALSE)


> df
  var1 var2 var3 var4 var5 search_term
1 bush tree rock rock bush        tree
2 tree bush tree tree bush        tree
3 tree rock tree tree rock        bush
4 rock rock rock tree tree        tree

我想在var1-var5中寻找“ search_term”,并最终为第一个值创建一个逻辑矩阵,对其他值创建为FALSE。

这样做:

df[, 1:5] == df$search_term

对于所有匹配项,均使用TRUE生成逻辑矩阵:

      var1  var2  var3  var4  var5
[1,] FALSE  TRUE FALSE FALSE FALSE
[2,]  TRUE FALSE  TRUE  TRUE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE  TRUE  TRUE

我想要得到的是这样的东西,仅在第一个比赛中才为TRUE:

      var1  var2  var3  var4  var5
[1,] FALSE  TRUE FALSE FALSE FALSE
[2,]  TRUE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE  TRUE FALSE

提前致谢!

阿克伦

如果您只想让该first条目为真

t(apply(df[,1:5]==df$search_term, 1, function(x) {
                  x[which(x)[-1]] <- FALSE
                  x}))

 #      var1  var2  var3  var4  var5
 #[1,] FALSE  TRUE FALSE FALSE FALSE
 #[2,]  TRUE FALSE FALSE FALSE FALSE
 #[3,] FALSE FALSE FALSE FALSE FALSE
 #[4,] FALSE FALSE FALSE  TRUE FALSE

更新

另一种选择是

 indx <- df[1:5]==df$search_term
 indx1 <- !indx+1
 indx1[cbind(1:nrow(df), max.col(indx,'first')*!!rowSums(indx))] <- TRUE
 indx1
 #     var1  var2  var3  var4  var5
 #[1,] FALSE  TRUE FALSE FALSE FALSE
 #[2,]  TRUE FALSE FALSE FALSE FALSE
 #[3,] FALSE FALSE FALSE FALSE FALSE
 #[4,] FALSE FALSE FALSE  TRUE FALSE

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在data.frame列中查找第一个值[R]

来自分类Dev

R:按组逐列查找data.table中的第一个非NA观测值

来自分类Dev

在R(data.table)中查找具有记录的连续两周的第一个日期

来自分类Dev

R-在data.table中查找第一个非零元素的索引

来自分类Dev

在R(data.table)中查找具有记录的连续两周的第一个日期

来自分类Dev

R-在data.table中查找第一个非零元素的索引

来自分类Dev

在一个data.frame中查找值并从另一列中转移值

来自分类Dev

在一个data.frame中查找值并从另一列中转移值

来自分类Dev

如何在data.table的列中选择第一个逗号分隔的值?

来自分类Dev

R Data.Table复制组的第一个值

来自分类Dev

R:data.table,将组的第一个和最后一个值设置为NA

来自分类Dev

data.frame:在每一行中查找值的最后一个索引

来自分类Dev

在R中的data.frame列表中使用一个data.frame的指定列

来自分类Dev

在R中的data.frame中查找仅在一个群集中出现的变量

来自分类Dev

将data.frame列中的值替换为另一个data.frame中的值

来自分类Dev

为data.table(r)中的每个ID选择第一个唯一匹配

来自分类Dev

根据另一个data.frame替换data.frame中的某些列值

来自分类Dev

R-删除data.table中每个因子的第一个和最后一个字符

来自分类Dev

在data.table中分组,并在多个列中选择第一个元素

来自分类Dev

在R中搜索一个data.frame

来自分类Dev

R错误:第一个参数`data`必须是数据框或共享数据

来自分类Dev

dim(data)<-dim中的错误:无效的第一个参数

来自分类Dev

为什么data.frame的第一个元素的访问时间取决于其尺寸?

来自分类Dev

使用来自另一个data.frame的查找值更新data.frame中的列-带有子字符串匹配

来自分类Dev

使用来自另一个data.frame的查找值更新data.frame中的列-带有子字符串匹配

来自分类Dev

相当于在numpy的新行/列中添加一个值,其作用类似于R的data.frame

来自分类Dev

循环在R中的一个最终data.frame前面的data.frame变量

来自分类Dev

如何查找列中的第一个值大于该列中的前一个值

来自分类Dev

Excel:在第2列当前值中查找第一个值

Related 相关文章

  1. 1

    在data.frame列中查找第一个值[R]

  2. 2

    R:按组逐列查找data.table中的第一个非NA观测值

  3. 3

    在R(data.table)中查找具有记录的连续两周的第一个日期

  4. 4

    R-在data.table中查找第一个非零元素的索引

  5. 5

    在R(data.table)中查找具有记录的连续两周的第一个日期

  6. 6

    R-在data.table中查找第一个非零元素的索引

  7. 7

    在一个data.frame中查找值并从另一列中转移值

  8. 8

    在一个data.frame中查找值并从另一列中转移值

  9. 9

    如何在data.table的列中选择第一个逗号分隔的值?

  10. 10

    R Data.Table复制组的第一个值

  11. 11

    R:data.table,将组的第一个和最后一个值设置为NA

  12. 12

    data.frame:在每一行中查找值的最后一个索引

  13. 13

    在R中的data.frame列表中使用一个data.frame的指定列

  14. 14

    在R中的data.frame中查找仅在一个群集中出现的变量

  15. 15

    将data.frame列中的值替换为另一个data.frame中的值

  16. 16

    为data.table(r)中的每个ID选择第一个唯一匹配

  17. 17

    根据另一个data.frame替换data.frame中的某些列值

  18. 18

    R-删除data.table中每个因子的第一个和最后一个字符

  19. 19

    在data.table中分组,并在多个列中选择第一个元素

  20. 20

    在R中搜索一个data.frame

  21. 21

    R错误:第一个参数`data`必须是数据框或共享数据

  22. 22

    dim(data)<-dim中的错误:无效的第一个参数

  23. 23

    为什么data.frame的第一个元素的访问时间取决于其尺寸?

  24. 24

    使用来自另一个data.frame的查找值更新data.frame中的列-带有子字符串匹配

  25. 25

    使用来自另一个data.frame的查找值更新data.frame中的列-带有子字符串匹配

  26. 26

    相当于在numpy的新行/列中添加一个值,其作用类似于R的data.frame

  27. 27

    循环在R中的一个最终data.frame前面的data.frame变量

  28. 28

    如何查找列中的第一个值大于该列中的前一个值

  29. 29

    Excel:在第2列当前值中查找第一个值

热门标签

归档