首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个矩阵列表,以度量R中增长率的差异

创建一个矩阵列表,以度量R中增长率的差异
EN

Stack Overflow用户
提问于 2015-02-06 14:00:36
回答 1查看 59关注 0票数 3

假设我有以下列表:

代码语言:javascript
复制
$`1990`
  cntry year growth
1     1 1990      1
2     2 1990      2
3     3 1990     14

$`1991`
  cntry year growth
4     1 1991      6
5     2 1991      5
6     3 1991      7

创建列表的代码:

代码语言:javascript
复制
cntry<-c(1,2,3,1,2,3)
year<-c(1990,1990,1990,1991,1991,1991)
growth<-c(1,2,14,6,5,7)

a<-data.frame(cntry,year,growth)
a.split<-split(a, as.factor(a$year))

我想要创建的是一个矩阵列表,用来衡量两国之间增长率的差异。

  1. 在各自的矩阵中,只有当列中国家的增长率高于行中国家的增长率时,才应计算增长率的差异。
  2. 如果列中的增长率等于或小于行中国家的增长率,则矩阵应显示值为0。
  3. 如果组合中至少有一个国家具有NA值,则矩阵应在各自的字段中显示0。

结果如下:

代码语言:javascript
复制
$`1990`
  1 2  3
1 0 1 13
2 0 0 12
3 0 0  0

$`1991`
  1 2 3
1 0 0 1
2 1 0 2
3 0 0 0

任何帮助都是非常欢迎的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-06 14:10:16

使用outer

代码语言:javascript
复制
> lapply(a.split, function(x) t(outer(x$growth, x$growth, function(u,v) ifelse(u>v, u-v, 0))))
#$`1990`
#     [,1] [,2] [,3]
#[1,]    0    1   13
#[2,]    0    0   12
#[3,]    0    0    0

#$`1991`
#     [,1] [,2] [,3]
#[1,]    0    0    1
#[2,]    1    0    2
#[3,]    0    0    0
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28367435

复制
相关文章

相似问题

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