【问题标题】:What R function can I use to check if the values of a column are identical based on an attribute?我可以使用什么 R 函数来检查列的值是否基于属性相同?
【发布时间】:2022-01-10 03:12:43
【问题描述】:

如果您的解决方案可以包含基于 tidyverse 包的解决方案,那就太好了。

基本上,我正在尝试按标题为“属性”的列进行分组,并测试“值”列中的所有值是否相同。

这是我的预期结果:

如您所见 - 对于 Mustang,Value 列全为 1。因此我们将匹配项设置为 =“Yes”。

对于 Corvette 和 Charger,由于其中一个值关闭,我们将 Matches 设置为 = "No"

我试过了:

数据 % mutate(Matches = ifelse(first(value) != any(Value), "Yes", "No")

没用。非常感谢任何帮助!

【问题讨论】:

  • any(Value) 不清楚。因为any(1) 返回 TRUE 而any(0) 返回 FALSE,即任何不等于 0 的值都返回 TRUE

标签: r tidyverse


【解决方案1】:

any(Value) 并没有真正做我们想要的,因为any 根据它是否有任何大于 0 的值返回 TRUE/FALSE。另外还有一些错别字(data <- group_by(Attribute) - 应该是data %>% group_by(Attribute)

> any(c(1, 0, 5))
[1] TRUE
> any(c(0, 0, 0))
[1] FALSE

我们可能需要检查不同元素的数量 (n_distinct) 是否等于 1

library(dplyr)
data <- data %>%
    group_by(Attribute) %>%
    mutate(Matches = c("No", "Yes")[1 + (n_distinct(Value) == 1)])
    # // or using ifelse
    # mutate(Matches = ifelse(n_distinct(Value) == 1, "Yes", "No"))

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2020-12-27
    • 2013-06-20
    • 2018-02-11
    • 1970-01-01
    相关资源
    最近更新 更多