我试图在这里找到类似的问题,但我认为,只要提出新的问题,可能会有帮助。
我有比较大的数据集(几百个台站的每日天气数据),我做了一些滑动窗口平均值的计算,得到了这样的中间输出。
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
by 11 column
我在这里得到了一些帮助,当我有as.Date
行名但无法修改所需的格式以运行时,第n行的平均值可以跳过。
我很感激你能抽出时间。
发布于 2014-01-25 07:52:21
添加一个具有所需类别的新列,并在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
https://stackoverflow.com/questions/21352553
复制相似问题