1

我有一些来自 gSSURGO 的土壤数据,其中列出了剖面,每个剖面都包含连续深度的层位。所以基本上,

> chorizon <- read.csv("chorizonexcel.csv", header = T)
> 
> chorizon [1:10,1:8]
   OBJECTID hzname desgndisc desgnmaste desgnmas_1 desgnvert hzdept_l hzdept_r
1         1      A         0          A       <NA>         0        0        0
2         2     Bk         0          B       <NA>         0        0       18
3         3   2BCk         2         BC       <NA>         0        0       64
4         4      A         0          A       <NA>         0        0        0
5         5     Bk         0          B       <NA>         0        0        8
6         6   Bkkm         0          B       <NA>         0        0       18
7         7    CBk         0         CB       <NA>         0        0       71
8         8      A         0          A       <NA>         0        0        0
9         9     Bk         0          B       <NA>         0        0        6
10       10   Bkkm         0          B       <NA>         0        0       21

最低剖面深度chorizon$hzdept_r始终是最大的,并且始终位于下一个地平线的 0 顶部深度之前。(轮廓 1 深度:0、18、64;轮廓 2 深度:0、8、18、71 等)

我试图得到:

OBJECTID hzname desgndisc desgnmaste desgnmas_1 desgnvert hzdept_l hzdept_r
3         3   2BCk         2         BC       <NA>         0        0       64
7         7    CBk         0         CB       <NA>         0        0       71
10       10   Bkkm         0          B       <NA>         0        0       21

我一直在尝试生成一个循环来创建一个只有最低视野的新 df。

如果已经回答了这个问题,那么我在过去 6 个小时内都没有找到它。如果这是一个太基本的问题,我深表歉意。

4

2 回答 2

0
x = chorizon$hzdept_r
n = length(x)
pts = which(diff(x)<0)
if(x[n]>x[n-1]) pts = c(pts,n)
chorizon[pts,]
于 2013-07-29T21:14:08.143 回答
0

几个选项:

chorDT[c(tail(hzdept_r==0, -1), TRUE)]
chorDT[c(diff(hzdept_r) < 0), TRUE)]
etc..  


这是使用的完整解决方案data.table

library(data.table)
chorDT <- data.table(chorizon)

chorDT[c(tail(hzdept_r==0, -1), TRUE)]

   OBJECTID hzname desgndisc desgnmaste desgnmas_1 desgnvert hzdept_l hzdept_r
1:        3   2BCk         2         BC       <NA>         0        0       64
2:        7    CBk         0         CB       <NA>         0        0       71
3:       10   Bkkm         0          B       <NA>         0        0       21
于 2013-07-29T21:14:44.693 回答