如何在R中按国家和年份查找最大值? [复制]

Posted

技术标签:

【中文标题】如何在R中按国家和年份查找最大值? [复制]【英文标题】:How to find the max value by country and year in R? [duplicate] 【发布时间】:2021-12-27 03:17:36 【问题描述】:

我有同一国家同一年份的多行数据。我想让它在一个国家/地区的特定年份只有 1 行数据。我希望我的指标变量是同一国家同一年所有行的最大可能值例如,我的数据当前如下所示:

country Year Trial
Afghanistan 1980 1
Afghanistan 1980 0
Afghanistan 1981 0
Afghanistan 1981 0
Afghanistan 1982 1
Afghanistan 1982 1

我想让它看起来像:

country Year presenceofTrial
Afghanistan 1980 1
Afghanistan 1981 0
Afghanistan 1982 1

对于 1980 年,由于我的第一行是 1,而我的第二行是 0,所以 1980 年的最后也是唯一的一行应该取最大值,即 1,等等。

我目前正在使用代码:

dataset %>% group_by(country, Year) %>% 
  summarise(
    presenceofTrial = max(dataset$Trial))

但是,无论 1 是否实际在原始表中,它只会为每一行返回 1。我该如何解决这个问题?

【问题讨论】:

= 用于赋值,== 用于比较。您也不应该在 dplyr 函数中使用 dataset$,因为它占用了整个向量的最大值,而不是逐列 是的,我想将 Trial 的最大值赋给变量 presentofTrial 知道了,现在可以使用了。感谢您的帮助! 【参考方案1】:

两种可能的方式(第二种更符合你的代码:

library(tidyverse)

df <- tibble(
    country = rep("Afghanistan", 6),
    Year = rep(1980:1982, each = 2),
    Trial = c(1,0,0,0,1,1)
)

first_method <- df %>%
    group_by(Year, country) %>%
    filter(Trial == max(Trial)) %>%
    slice(1)

second_method <- df %>%
    group_by(country,Year) %>%
    summarize(
        PresenceofTrial = max(Trial)
    )

【讨论】:

以上是关于如何在R中按国家和年份查找最大值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我将如何在 php 中按给定月份和年份计算未来几个月

如何在python中按模式分组? [复制]

编写一个 R 函数,它只在声明时子集

在R中具有相同组ID的另一个数据帧中按值过滤分组数据帧

查找表中每个 ID 的最大连续年份(Oracle SQL)

如何在 PHP 中按国家/地区记录 IP?