r - 在 R 中,如何让循环函数在每行都存在 site_id 的唯一站点上工作?
问题描述
我正在尝试制作一个代码循环,在其中我为每个站点(在这种情况下为湖)制作年度平均值。我有以下(我的子集)数据:
SITE YEAR ANC DOC NO3 SBC_ALL SBC.Na SO4
1434021 1996 -25.318 2.439 18.701 91.327 79.580 99.695
020059O 2012 70.010 8.070 2.750 147.270 186.350 45.540
1434021 1997 -22.534 2.387 21.617 96.635 84.946 102.071
1434025 1994 25.352 1.595 15.334 172.988 159.256 117.223
020059O 2003 48.140 7.860 4.410 156.010 188.340 78.000
020059O 1993 28.230 7.430 3.420 139.540 181.590 84.550
1364959 1993 6.050 0.756 19.111 148.300 131.157 118.411
1434021 2008 -4.386 2.420 13.861 80.651 70.136 82.469
143400680 1996 -20.842 4.961 16.075 99.999 88.871 88.057
1364959 1997 2.650 1.845 25.613 143.504 126.480 104.679
我运行以下代码并获取每行数据的图表。我想获取每个特定站点的图表(例如 SITE = 020059O)。从 1990 年到 2017 年,每个站点都有每年的年平均值。
for (site_id in mydata$SITE)
{
p <-
filter(mydata, SITE == site_id) %>%
ggplot(aes(x = YEAR, y = ANC)) +
geom_line() +
geom_point() +
theme_bw() +
ggtitle(site_id)
print(p)
}
此代码产生:
我已经研究过使用 distinct() 或 unique() 函数,但这些似乎删除了重复项。我需要数据中的重复项,因为它们包含年份和该年的平均值。我还有哪些其他选项只能在唯一的站点上运行 ggplot,但保留我需要的年度数据?
循环代码的最初想法来自:http ://www.r-gators.com/2017/10/25/loops-in-r/
解决方案
for (site_id in unique(mydata$SITE))
{
p <- filter(mydata, SITE == site_id) %>%
ggplot(aes(x = YEAR, y = ANC)) +
geom_line() +
geom_point() +
theme_bw() +
ggtitle(site_id)
print(p)
}
这只会从要循环的 ID 列表中删除重复项 - 您仍然会在输出中获得多行。
推荐阅读
- java - 在客户端运行使用 Maven 创建的 Jar 文件
- apache-spark - 来自..错误有效负载的无效状态代码“400”:“要求失败:会话未激活
- python - 为什么这段代码删除文件而不是重命名它?
- javascript - 对事件函数中 if/else 的使用进行故障排除
- reactjs - 来自 Reactive Native 的 Google SignIn 提供 TypeError - Expo
- python - 从排序数据框中提取列值的有效方法
- android - 保留旧值,更新新值并在 mpandroidchart 中显示动画
- java - 修改 json 数组文件中的键值,并将更改的值写入同一文件
- python - API回复creativecommon时如何打印“this is creativeCommon”?
- react-native - 无法在 iOS 上获取电话号码以自动填充