我试图在这里找到类似的问题,但认为创建新问题可能会有所帮助。
我有相对较大的数据集(数百个站的每日天气数据) 我做了一些滑动窗口平均计算,我得到了这样的中间输出。
10481441 row
11 column
的数据框,但我的行名由具有可识别前缀的一系列数字组成。
例如,
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
11 column
的{{1}}输出表格为as.Date
我得到了一些帮助,当我有{{1}}行名称但是无法修改所需的格式时,第n行的跳跃平均值。
我感谢你的时间。
答案 0 :(得分:5)
添加包含所需类别的新列,并在aggregate
中使用该列。这是一个例子:
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
这看起来就像你的数据。现在将类别添加为新列。如果您在.
上拆分每个名称,则需要返回第二个条目:
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
根据这个新专栏进行汇总。 .
这里的意思是“所有其他列”,因此您将获得除新列以外的所有内容的方法:
aggregate(.~category, data=d, FUN=mean)
## category x
## 1 1 5.5
## 2 2 6.5
## 3 3 7.5