gpt4 book ai didi

r - 将 R 中的 DataFrame 按年份的重复值按评级的最低值进行子集化

转载 作者:行者123 更新时间:2023-12-01 13:40:22 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据框

> fitchRatings
Country Month Year FitchLongTerm LongTermTransformed
1 Abu Dhabi 7 2007 AA 22
2 Angola 5 2012 BB- 12
3 Angola 5 2011 BB- 12
4 Angola 5 2010 B+ 11
5 Argentina 7 2010 B 10
6 Argentina 12 2008 RD 3
7 Argentina 8 2006 RD 3
8 Argentina 12 2005 RD 3
9 Argentina 6 2005 DDD 2
10 Argentina 1 2005 D 0

如您所见,对于某些国家/地区,一年有多个观测值。我想对 DF 进行子集化,以便我只为每个国家/地区年份保留一个观测值,而我想要保留的观测值是“LongTermTransformed”的最小值。

在此数据集中,Country 和 LongTermTransformed 是因子,Year 是整数。

提前致谢。

最佳答案

有很多方法可以根据具有分组列的列中的最小值对行进行子集化。一种选择是在将“LongTermTransformed”转换为“数字”后使用 which.min 获取“min”值的索引。我们可以使用 slice 对索引标识的行进行子集化。

library(dplyr)
fitchRatings %>%
group_by(Country, Year) %>%
slice(which.min(as.numeric(as.character(LongTermTransformed))))

或者我们可以对 data.table 使用类似的选项。不同之处在于我们将 'data.frame' 转换为 'data.table' (setDT) 并使用 .SD 进行子集化。

library(data.table)#v1.9.5+
setDT(fitchRatings)[,
.SD[which.min(as.numeric(levels(LongTermTransformed))[LongTermTransformed])],
by = .(Country, Year)]

关于r - 将 R 中的 DataFrame 按年份的重复值按评级的最低值进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462107/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com