我需要在由“ ID”分隔的数据集中使用相同的功能 例如:
a <- rnorm (12,50,5)
b <- rnorm (12,50,5)
c <- c(1,1,1,2,2,2,3,3,3,4,4,4)
w <- data.frame (cbind(a,b,c))
colnames (w) <- c("X","Y","ID")
结果为:
X Y ID
1 58.60074 49.50746 1
2 48.58635 41.67082 1
3 52.15529 48.06197 1
4 43.90611 61.65534 2
5 49.98929 57.84950 2
6 43.17375 49.44611 2
7 48.87200 46.63762 3
8 48.70081 54.89588 3
9 48.80352 52.82323 3
10 60.25107 48.05426 4
11 47.90206 55.46229 4
12 41.61667 50.24669 4
设置ID = 1,设置ID = 2,设置ID = 3,设置ID =4。如何分别自动地为每个集合应用相同的功能。谢谢
给迈克: X和Y是地理坐标,我需要对集合中的所有行一起使用一个方程式,以获取新的坐标。
至MrFlick:集ID = 1示例中的点中心:
x_1 <- mean (w[1:3,1])
y_1 <- mean (w[1:3,2])
结果为:
> x_1
[1] 53.11413
> y_1
[1] 46.41341
或设置ID = 2
x_2 <- mean (w[4:6,1])
y_2 <- mean (w[4:6,2])
结果为:
> x_2
[1] 45.68972
> y_2
[1] 56.31698
致Julian_Hn: 它完美地工作。谢谢
答案 0 :(得分:1)
对于所提供的示例,这将为您提供所需的内容:
library(dplyr)
tab <- w %>%
group_by(ID) %>%
summarize(mean.x=mean(X), mean.y=mean(Y))
tab
如果您不总是寻找均值,则可以用summarize
中的其他函数代替。
答案 1 :(得分:0)
按ID拆分data.frame,然后返回colMeans。
spl <- split.data.frame(w,f=w$ID)
mean_df <- t(sapply(spl,colMeans))