如何在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中按国家和年份查找最大值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章