使用两列通过R中的另一个数据集过滤数据集

时间:2016-05-10 14:21:00

标签: r dataframe subset

我想要完成的任务实际上是通过两列中的条目按照另一个数据帧中的条目过滤一个数据帧。 我有dataframe sdata,它有UserId和ClusterNum(以及其他列),还有dataframe用户,也有两列。 我需要通过匹配这些列对来过滤用户。 我试过了

users[users[,c("userId","ClusterNum")] %in% sdata[,c("userId","ClusterNum")],]

但是返回了一个空数据帧。

sdata是从用户生成的:

cdata <- ddply(users, c("userId","ClusterNum"), summarise,
           N    = length(ClusterNum),
           mean = mean(rating),
           total = N*mean)
sdata <- ddply(cdata, .(userId), function(x) x[which.max(x$total),])

用户是来自http://files.grouplens.org/datasets/movielens/ml-latest-small.zip

的评分数据集

电影数据集缩放,pca生成,通过k-means算法聚类。

数据集用户的列:

colnames(users)
   [1] "userId"     "movieId"    "rating"     "timestamp"  "ClusterNum"

1 个答案:

答案 0 :(得分:0)

实际上,我找到了一个非常简单的解决方案:

matches <-users[c(which( outer(users$ClusterNum, sdata$ClusterNum, "==") & 
outer(users$userId, sdata$userId, "=="), arr.ind=TRUE) ),]