小编Raf*_*din的帖子

如何在不删除整个行的情况下让R忽略N / A值?

我正在处理一个大型数据集(大约40列),我需要按月汇总不同列的值,并对当月内的值求平均值。数据集看起来像这样。

dd <-
mo  yr Na   NH4 NO2
1 2009 0.4  N/A N/A
1 2009 0.2  0.1 N/A
2 2009 0.5  0.6 0.4
2 2009 0.7  0.2 0.1
Run Code Online (Sandbox Code Playgroud)

我用过

dd.agg=aggregate(.~mo+yr, dd, FUN=mean)
Run Code Online (Sandbox Code Playgroud)

来创建一个新的数据集,但是由于我在NO2列中有一些N / A数据(并且由于采样过程中的某些问题,所以我无法将其删除或将其更改为0),所以整个一月已从dd.agg数据集中删除。我尝试添加na.rm = TRUE,但似乎无济于事。

从本质上讲,我需要R忽略N / A数据的存在。不要将它们视为0(这会影响平均值),而是要从该数据集中获取如下内容

dd.agg <-
mo  yr Na   NH4 NO2
1 2009 0.3  0.1 N/A
2 2009 0.6  0.4 0.25
Run Code Online (Sandbox Code Playgroud)

如果整个月由N / A组成,那么平均值就是N / A值(或一个空单元格,对我来说并不重要,因为我在图中不需要它们),以及当一个月有只需几个N / As,即可得出非N / As值的平均值。我可以逐行执行相同的聚合过程,然后将所有内容手动放入新的数据集中,但是对于40列来说有点痛苦...有什么想法吗?

aggregate r

3
推荐指数
1
解决办法
45
查看次数

绘制垂直线以区分不同“类别”的数据

我的数据框丢失了这样的东西

Year<-c(2009, 2008.75, 2008.5, 2008.25, 2008, 2007.66, 2007.33, 2007, 2006, 2006.75, 2006.5, 2006.25, 2005, 2005.66, 2005.33, 2004)
Depth<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
Data<-runif(16, -1.0, 1.0)
dd<-data.frame(Year, Depth, Data)
Run Code Online (Sandbox Code Playgroud)

现在......我需要绘制数据与深度,到目前为止我正在使用 ggplot2 和一个看起来像这样的代码

G<-ggplot(dd, aes(Depth, Data))+
    geom_line(color="blue3", size=.25)
G<-G+ggtitle("Title")+theme_bw()
G<-G+labs(x="Depth (m)",  y=expression("norm value"))
G
Run Code Online (Sandbox Code Playgroud)

但我还需要添加垂直线,以区分对应于每年开始的图表的不同“部分”(即 dd 数据集的 Year 列的每个整数)。我不需要它很花哨,我只需要在每个对应深度的细黑垂直线作为年份的整数值。ggplot2可以吗?

r ggplot2

1
推荐指数
1
解决办法
72
查看次数

标签 统计

r ×2

aggregate ×1

ggplot2 ×1