首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >第n行间隔的data.frame colmn

第n行间隔的data.frame colmn
EN

Stack Overflow用户
提问于 2014-01-25 15:38:23
回答 1查看 357关注 0票数 1

我试图在这里找到类似的问题,但我认为,只要提出新的问题,可能会有帮助。

我有比较大的数据集(几百个台站的每日天气数据),我做了一些滑动窗口平均值的计算,得到了这样的中间输出。

10481441 row11 column数据帧,但我的行名是由具有可识别前缀的一系列数字组成的。

例如,

代码语言:javascript
代码运行次数:0
运行
复制
X1.1
X1.2
X1.3
...
X1.11659
X2.1
X2.2
X2.3
...
X2.11659
X3.1
...
X899.11659

然后,我要做的是用行号的相同前缀求出11 columns的平均值。

例如:

对于11 columns mean(X1.1,X2.1,X3.1,...X899.1) (X1.2,X2.2,X3.2,...X899.2),因此期望有一个输出表作为899集合的11659 row by 11 column

我在这里得到了一些帮助,当我有as.Date行名但无法修改所需的格式以运行时,第n行的平均值可以跳过。

我很感激你能抽出时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-25 15:52:21

添加一个具有所需类别的新列,并在aggregate中使用该列。下面是一个示例:

代码语言:javascript
代码运行次数:0
运行
复制
d <- data.frame(x=1:12)
rownames(d) <- paste0('X', rep(1:4, 3), '.', rep(1:3, 4))
d
##       x
## X1.1  1
## X2.2  2
## X3.3  3
## X4.1  4
## X1.2  5
## X2.3  6
## X3.1  7
## X4.2  8
## X1.3  9
## X2.1 10
## X3.2 11
## X4.3 12

这看起来有点像你的数据。现在将类别添加为新列。如果在.上拆分每个名称,则希望返回第二个条目:

代码语言:javascript
代码运行次数:0
运行
复制
d$category <- sapply(strsplit(rownames(d), '[.]'), '[', i=2)
d
##       x category
## X1.1  1        1
## X2.2  2        2
## X3.3  3        3
## X4.1  4        1
## X1.2  5        2
## X2.3  6        3
## X3.1  7        1
## X4.2  8        2
## X1.3  9        3
## X2.1 10        1
## X3.2 11        2
## X4.3 12        3

并根据这个新列进行聚合。.在这里的意思是“所有其他列”,因此您将获得除新列之外的其他所有内容的方法:

代码语言:javascript
代码运行次数:0
运行
复制
aggregate(.~category, data=d, FUN=mean)
##   category   x
## 1        1 5.5
## 2        2 6.5
## 3        3 7.5
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21352553

复制
相关文章

相似问题

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