首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >趋势分析(增加、减少和无趋势)

趋势分析(增加、减少和无趋势)
EN

Stack Overflow用户
提问于 2016-04-13 06:20:46
回答 1查看 918关注 0票数 1

我有一个由4个站点组成的data.frame df。每个站点有四个参数(A、B、C和D),我有2011至2014年每个参数的值。

代码语言:javascript
复制
siteID <- c(rep("site1", 16), rep("site2", 16), rep("site3", 16),rep("site4", 16))
YEAR <-   rep(c("2011", "2012", "2013", "2014"), 16)
parameter <- c(rep("A", 4), rep("B", 4), rep("C", 4), rep("D", 4),
               rep("A", 4), rep("B", 4), rep("C", 4), rep("D", 4),
               rep("A", 4), rep("B", 4), rep("C", 4), rep("D", 4),
               rep("A", 4), rep("B", 4), rep("C", 4), rep("D", 4))
value <- c(seq(1, 4, by=1), seq(10, 40, by=10), seq(12, 18, by=2), seq(5, 20, by=5),
           seq(3, 12, by=3), sample(13:18, 4), sample(15:22, 4), sample(10:18, 4),
           seq(7, 1, by=-2), sample(15:22, 4), sample(15:19, 4), sample(10:20, 4),
           seq(8, 5, by=-1), seq(50, 20, by=-10), seq(16, 10, by=-2), seq(20, 5, by=-5))
df <- data.frame(siteID, YEAR, parameter, value)


head(df, 20)
#    siteID YEAR parameter value
#1   site1 2011         A     1
#2   site1 2012         A     2
#3   site1 2013         A     3
#4   site1 2014         A     4
#5   site1 2011         B    10
#6   site1 2012         B    20
#7   site1 2013         B    30
#8   site1 2014         B    40
#9   site1 2011         C    12
#10  site1 2012         C    14
#11  site1 2013         C    16
#12  site1 2014         C    18
#13  site1 2011         D     5
#14  site1 2012         D    10
#15  site1 2013         D    15
#16  site1 2014         D    20
#17  site2 2011         A     3
#18  site2 2012         A     6
#19  site2 2013         A     9
#20  site2 2014         A    12

我可以通过下面的图表了解数据的趋势。

代码语言:javascript
复制
library(ggplot2)
ggplot(df, aes(x = YEAR, y= value, col= parameter))+
      geom_line(aes(group=parameter))+
      facet_wrap(~siteID)

然而,如果我有许多网站(例如70个网站),它将需要更多的时间来分析所有参数的视觉趋势。在下面的表格中,我能得到数据的趋势吗?

代码语言:javascript
复制
siteID   parameter   trend
site1    A           increasing    
site1    B           decreasing
site1    C           no trend
site1    D           increasing
.
site4    A           decreasing
site4    B           decreasing 
site4    C           increasing
site4    D           decreasing

有什么建议会很感激的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-13 07:22:21

一个基本的解决方案是将您的数据帧转换为宽格式,然后添加一个列,在该列中您可以确定增加、减少或没有趋势的条件。在这个例子中,如果变化是+-2,则没有趋势。

代码语言:javascript
复制
library(reshape2)
df2 <- dcast(df, siteID + parameter ~ YEAR, value.var="value")
df2$trend <- ifelse(df2$`2014`-df2$`2011`>2, "increasing", 
                ifelse(df2$`2014`-df2$`2011`< -2, "decreasing", "no trend"))
df2

输出:

代码语言:javascript
复制
   siteID parameter 2011 2012 2013 2014      trend
1   site1         A    1    2    3    4 increasing
2   site1         B   10   20   30   40 increasing
3   site1         C   12   14   16   18 increasing
4   site1         D    5   10   15   20 increasing
5   site2         A    3    6    9   12 increasing
6   site2         B   16   17   14   15   no trend
7   site2         C   16   20   18   19 increasing
8   site2         D   16   13   11   12 decreasing
9   site3         A    7    5    3    1 decreasing
10  site3         B   20   22   17   16 decreasing
11  site3         C   17   19   15   18   no trend
12  site3         D   19   12   17   20   no trend
13  site4         A    8    7    6    5 decreasing
14  site4         B   50   40   30   20 decreasing
15  site4         C   16   14   12   10 decreasing
16  site4         D   20   15   10    5 decreasing
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36590160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档