【发布时间】:2019-10-28 19:37:19
【问题描述】:
我想制作一组数据,其中在同一 Lat 和 Long 上对同一物种进行多个 Year 的测量。然后,我想对所有这些组进行线性回归(使用 N 作为因变量,Year 作为自变量)。
练习数据集:
Species Year Lat Long N
1 1 1999 1 1 5
2 1 2001 2 1 5
3 2 2010 3 3 4
4 2 2010 3 3 2
5 2 2011 3 3 5
6 2 2012 3 3 8
7 3 2007 8 7 -10
8 3 2019 8 7 100
9 2 2000 1 1 5
首先,我对在同一 Species 在同一 latitude 和 longitude 上进行多次测量的数据进行平均。然后,我根据Lat、Long 和Species 拆分数据。但是,这仍然将Lat、Long 和Species 不等于($ '4') 的行组合在一起。此外,我想删除$'1',因为我只想使用对多个Year 进行多次测量的数据。我该怎么做?
Data <- read.table("Dataset.txt", header = TRUE)
Agr_Data <- aggregate(N ~ Lat + Long + Year + Species, data = Data, mean)
Split_Data <- split(Agr_Data, Agr_Data$Lat + Agr_Data$Long + Agr_Data$Species)
Regression_Data <- lapply(Split_Data, function(Split_Data) lm(N~Year, data = Split_Data) )
Split_Data
$`3`
Lat Long Year Species N
1 1 1 1999 1 5
$`4`
Lat Long Year Species N
2 2 1 2001 1 5
3 1 1 2000 2 5
$`8`
Lat Long Year Species N
4 3 3 2010 2 3
5 3 3 2011 2 5
6 3 3 2012 2 8
$`18`
Lat Long Year Species N
7 8 7 2007 3 -10
8 8 7 2019 3 100
期望的输出:
Lat Long Species Coefficients
3 3 2 2.5
8 7 3 9.167
【问题讨论】:
-
嗨,如果您使用 dput(),您的示例很容易重现。
-
我很抱歉,对 R 来说很新。这是 dput 输出。结构(列表(物种= c(1L,1L,2L,2L,2L,2L,3L,3L,2L),年份=c(1999L,2001L,2010L,2010L,2011L,2012L,2007L,2019L,2000L),纬度 = c(1L, 2L, 3L, 3L, 3L, 3L, 8L, 8L, 1L), 经度 = c(1L, 1L, 3L, 3L, 3L, 3L, 7L, 7L, 1L), N = c( 5L, 5L, 4L, 2L, 5L, 8L, -10L, 100L, 5L)), class= "data.frame", row.names = c(NA, -9L))