我需要获取特定行(此处:年份)的一列(此处:分数)的平均值。具体来说,我想知道三个时期的平均分数:
- 第 1 期:年份
- 周期 2:年份 >= 1984 年 & 年份
- 期间 3:年份 >= 1991
这是我的数据的结构:
country year score
Algeria 1980 -1.1201501
Algeria 1981 -1.0526943
Algeria 1982 -1.0561565
Algeria 1983 -1.1274560
Algeria 1984 -1.1353926
Algeria 1985 -1.1734330
Algeria 1986 -1.1327666
Algeria 1987 -1.1263586
Algeria 1988 -0.8529455
Algeria 1989 -0.2930265
Algeria 1990 -0.1564207
Algeria 1991 -0.1526328
Algeria 1992 -0.9757842
Algeria 1993 -0.9714060
Algeria 1994 -1.1422258
Algeria 1995 -0.3675797
...
计算出的平均值应添加到 df 的附加列(“平均值”)中,即第 1 期的年份、第 2 期的年份等的平均值相同。
它应该是这样的:
country year score mean
Algeria 1980 -1.1201501 -1.089
Algeria 1981 -1.0526943 -1.089
Algeria 1982 -1.0561565 -1.089
Algeria 1983 -1.1274560 -1.089
Algeria 1984 -1.1353926 -0.839
Algeria 1985 -1.1734330 -0.839
Algeria 1986 -1.1327666 -0.839
Algeria 1987 -1.1263586 -0.839
Algeria 1988 -0.8529455 -0.839
Algeria 1989 -0.2930265 -0.839
Algeria 1990 -0.1564207 -0.839
...
我尝试过的每条可能的路径都很容易变得超级复杂 - 而且我必须计算 90 多个国家/地区不同时间段的平均分数......
非常感谢您的帮助!
datfrm$mean <-
with (datfrm, ave( score, findInterval(year, c(-Inf, 1984, 1991, Inf)), FUN= mean) )
标题问题与实际问题有点不同,将通过使用逻辑索引来回答。如果只想要特定子集的平均值year >= 1984 & year <= 1990
这将通过以下方式完成:
mn84_90 <- with(datfrm, mean(score[year >= 1984 & year <= 1990]) )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)