计算所有列具有相同值的行数

时间:2017-08-29 21:45:04

标签: r

我有一个数据框,我想计算每行内所有列具有相同值的行数。

例如,我有这些数据:

cmp <- read.table(text = "
A B C D
1 1 1 0
1 1 1 1
2 2 2 2
3 3 3 0", header = TRUE)

此处,计数为2,因为第二行和第三行每个只有一个唯一值,分别只有1 s和2个。

提前致谢。

4 个答案:

答案 0 :(得分:6)

这使用apply()来计算每行中不同元素的数量,应该可以解决这个问题:

sum(apply(cmp, 1, function(x) length(unique(x))==1))
## [1] 2

答案 1 :(得分:4)

计算每行的值数等于第一个值。如果此计数等于列数,则行中的所有值都相同。

CAST(DATEADD(Month,-6,cast(DATEADD(year,DATEDIFF(year,'01/01/2017',GETDATE()),'01/01/2017') AS DATE)) AS DATE) as [6 mo Anniv]

答案 2 :(得分:3)

您可以检查行间的最大值和最小值是否相同

sum(do.call(pmax, cmp) == do.call(pmin, cmp))
#[1] 2

获取存在相同值的行

which(do.call(pmax, cmp) == do.call(pmin, cmp))
#[1] 2 3

答案 3 :(得分:0)

整洁的方式:

df %>% 
  rowwise() %>% 
  mutate(unique_vals = length(unique(c_across(everything()))))

这为您提供了所选列的唯一值的数量——您可以随意将 everything() 更改为您需要的任何值。然后,您可以随意过滤/求和这个变量。