计算数据框中的确切行匹配

问题描述:

比方说,我有一个数据框df和示例行sample <- df[1,]计算数据框中的确切行匹配

如何计算sampledf中的出现次数?

从我发现至今,它应该像sum(df==sample),但我得到一个错误

‘==’ only defined for equally-sized data frames

例如:

df <- data.frame(matrix(rnorm(20), nrow=10)) 
df <- rbind(df, df[1,]) 
sample <- df[1,] 

unlist(sample)[col(df)]==df 

     X1 X2 
1 TRUE TRUE 
2 FALSE FALSE 
3 FALSE FALSE 
4 FALSE FALSE 
5 FALSE FALSE 
6 FALSE FALSE 
7 FALSE FALSE 
8 FALSE FALSE 
9 FALSE FALSE 
10 FALSE FALSE 
11 TRUE TRUE 
+1

的''==只针对大小相等的数据集。您可能需要显示一个可重复使用的小例子。假设尺寸正确,也许是'unlist(sample)[col(df)] == df' – akrun

+0

谢谢!这几乎是我需要的。 (增加一个例子) – user5226582

+2

你需要'colSums(unlist(sample)[col(df)] == df)' – akrun

使用合并再算上行:

# reproducible example data 
set.seed(1) 
df1 <- data.frame(matrix(rnorm(20), nrow = 10)) 
# add duplicate row 
df1 <- rbind(df1, df1[1,]) 
df1_sample <- df1[1,] 

# merge and get number of rows 
nrow(merge(df1_sample, df1)) 
# [1] 2 
+0

这样做,非常感谢! – user5226582

+0

@ user5226582 df和sample是R函数,尽量避免将它们用作变量名称。我会用不同的名字更新我的文章。 – zx8754

+0

我只是试图“匿名”我的数据,实际名称不同;但我仍然不知道,所以谢谢。 – user5226582