1つの列(depth、z)を含むデータフレームがあり、通常の深度値に基づいて累積深度値の違いを見つけようとしています。基準値、それぞれの累積深度値、および連続する累積深度の差がある3番目の列の3つの列を持つ新しいデータフレームを作成したいと思います。たとえば、次のようになります。
z1<-c(1.2, 1.5, 0.8, 0.7, 1.6, 1.9, 1.1, 0.6, 1.3, 1.0)
z<-data.frame(z1)
crit1<-c(0.5,1,1.5,2)
# A loop comes to mind,
for(i in c(0.5,1,1.5,2)){
print( sum(subset(z1,z1<=i)))
} # But I get an error, because I cannot use integers
Error in FUN(X[[1L]], ...) :
only defined on a data frame with all numeric variables
で試みる cumsum
cumsum(z1)[seq(0.5,2,by=0.5)] # Which doesn't work either
次のようなテーブルを取得したいと思います。
Crit Cumulative Difference
0.5 0 0
1 3.1 3.1
1.5 8.2 5.1
for
ここではループを使用しないでくださいsapply
。結果を保存するため、使用する必要があります。
y <- sapply(crit1,function(x)sum(z1[z1<=x]))
d <- c(0,diff(y))
data.frame(Crit = crit1, Cumulative =y, Difference=d)
# Crit Cumulative Difference
# 1 0.5 0.0 0.0
# 2 1.0 3.1 3.1
# 3 1.5 8.2 5.1
# 4 2.0 11.7 3.5
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加