计算数据框中的确切行匹配
比方说,我有一个数据框df
和示例行sample <- df[1,]
。计算数据框中的确切行匹配
如何计算sample
在df
中的出现次数?
从我发现至今,它应该像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
使用合并再算上行:
# 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
这样做,非常感谢! – user5226582
@ user5226582 df和sample是R函数,尽量避免将它们用作变量名称。我会用不同的名字更新我的文章。 – zx8754
我只是试图“匿名”我的数据,实际名称不同;但我仍然不知道,所以谢谢。 – user5226582
的''==只针对大小相等的数据集。您可能需要显示一个可重复使用的小例子。假设尺寸正确,也许是'unlist(sample)[col(df)] == df' – akrun
谢谢!这几乎是我需要的。 (增加一个例子) – user5226582
你需要'colSums(unlist(sample)[col(df)] == df)' – akrun