首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定一个列,在data.frame中查找该列的重复项

给定一个列,在data.frame中查找该列的重复项
EN

Stack Overflow用户
提问于 2013-11-04 14:12:10
回答 2查看 55关注 0票数 1

鉴于以下数据:

代码语言:javascript
复制
questionTagMatrix <- data.frame( question1=c("0","1","0"), question2=c("1","0", "0"), question3=c("0","1","0"), question4=c("0","1","1")  )
rownames(questionTagMatrix)[1] <- "php"
rownames(questionTagMatrix)[2] <- "html"
rownames(questionTagMatrix)[3] <- "javascript"

newQuestion <- data.frame( newquestion=c("0","1","0") )
rownames(newQuestion)[1] <- "php"
rownames(newQuestion)[2] <- "html"
rownames(newQuestion)[3] <- "javascript"

如何找到questionTagMatrix的所有列都等于newQuestion

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-04 14:20:04

您可以使用apply查找以下列:

代码语言:javascript
复制
questionTagMatrix[apply(questionTagMatrix, 2, function(x) 
                                               all(x == as.matrix(newQuestion)))]

questionTagMatrix的所有列与newQuestion进行了比较。结果:

代码语言:javascript
复制
#            question1 question3
# php                0         0
# html               1         1
# javascript         0         0
票数 2
EN

Stack Overflow用户

发布于 2013-11-04 14:22:34

基于colSums的矢量化解决方案

代码语言:javascript
复制
 questionTagMatrix[,colSums(questionTagMatrix == newQuestion)
                    ==nrow(questionTagMatrix)]

          question1 question3
php                0         0
html               1         1
javascript         0         0

PS newQuestion是这里的一个向量:

代码语言:javascript
复制
newQuestion =c("0","1","0") ## not data.frame( newquestion=c("0","1","0") )

要只得到问题的名字:

代码语言:javascript
复制
names(questionTagMatrix)[colSums(questionTagMatrix == newQuestion)
+                   ==nrow(questionTagMatrix)]
[1] "question1" "question3"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19769550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档