首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算值意味着R中数据框中的每个站点和年份

计算值意味着R中数据框中的每个站点和年份
EN

Stack Overflow用户
提问于 2013-11-22 07:29:26
回答 1查看 1K关注 0票数 1

因此,我有一个数据集,其中包含站点、年份和测量的变量(比方说x)。在一年中,跨多年,在多个地点多次测量X。这是我的数据集的一个例子(每个x都是在不同的日期收集的,我只是从日期中提取了年份,因为我对年度平均值感兴趣)。让我们将数据集命名为df:

代码语言:javascript
运行
复制
>df

site  year   x
  a   2000  10
  a   2000  12
  a   2000  13
  b   2000  14
  b   2000  15
  b   2000  17
  c   2000   9
  c   2000  11
  c   2000  11
  a   2001  11
  a   2001  12
  a   2001  12
  b   2001  13
...

而且这种情况持续了好几年。

我想要提取每个特定站点和年份的x的平均值。我写了一个for循环,但是遇到了问题。我想返回一个包含site、year和average的x数据帧,但它似乎将df$x中找到的所有变量的平均值作为第一个值,然后返回其余结果的NaNs。

下面是我的代码:

代码语言:javascript
运行
复制
temp <- NULL;
mn.x <- NULL;
a <- NULL;
for(i in unique(df$site)) {
for (j in unique(df$year)) {
    site <- i;
    year <- j;
    a <- data.frame(site, year);
    temp <- mean(na.omit(df$x[df$site==i && df$year==j]))
    site.year <- data.frame(a, temp)
        mn.x <- rbind(temp, site.year)
  } 
}

当我在R中输入mn.x时返回的clear...the结果是

代码语言:javascript
运行
复制
>mn.x
 [1] 10.4
 [1] NaN
 [1] NaN
 [1] NaN
 [1] NaN
...

其中10.4是df$x的所有值的x的平均值(又称均值(df$x))

我的循环出了什么问题?或者,由于这是一个示例数据集,也许我的数据集确实存在问题?clarify...class(df$x)只是“数字”

感谢你的任何想法,

保罗

EN

回答 1

Stack Overflow用户

发布于 2013-11-22 11:05:31

一种流行的方法是使用plyr...

代码语言:javascript
运行
复制
require(plyr)
ddply(df, .(site,year), summarize, xm=mean(x))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20134101

复制
相关文章

相似问题

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