簡體   English   中英

R 中的連續條件和

[英]Successive conditional sum in R

我正在嘗試在數據框中編寫條件總和。 我嘗試將“sum” function 與“which” function 一起使用,但無法使其工作。 這是一個玩具示例:

名為“距離”的矩陣包括從給定點 N 到 3 個其他點的距離,用於 2 次觀察。
對於第一個觀察,N1 是 N 的最近鄰,第二個最近鄰是 N2,第三個是 N3。
每個點都屬於一個 class(A 或 B),在每次觀察時都會發生變化,並且此信息記錄在名為“類”的矩陣中

dist1 <- c(0.2,0.3,0.9)
dist2 <- c(0.1,0.6,0.9)
distance <- rbind(dist1,dist2)
colnames(distance) <- c("N1.dist","N2.dist","N3.dist")
rownames (distance) <- c("obs1","obs2")
classes.observation1 <- c("A","B","A")
classes.observation2 <- c("B","B","A")
classes <- rbind(classes.observation1,classes.observation2)
colnames(classes) <- c("N1.class","N2.class","N3.class")
rownames (classes) <- c("obs1","obs2")
total <- cbind(distance,classes)
df <- data.frame(total)

問題是:對於觀測 j,N(j) 與其所有屬於 Class A 的所有第 i 個最近鄰之間的距離之和是多少?

在玩具示例中,對於第一次觀察,問題可以通過以下方式說明/分解:

(A) N 與屬於 Class A 的最近鄰之間的距離是多少
(B) N 與其屬於 Class A 的第二近鄰之間的距離是多少
(C) N 與其屬於 Class A 的第三近鄰之間的距離是多少
(D)為A,N與第一個鄰居的距離之和
(E) 是 (A)+(B),N 和它的第一個鄰居之間的距離之和,以及 N 和它的第二個最近鄰居之間的距離......

碰巧,有人有建議嗎? 謝謝

...為垃圾代碼獎穿衣...

colnumber <- ncol(df)
rownumber <- nrow(df)
number.of.points <- colnumber /2

# convert Ndist to numeric
df [,1:number.of.points] <- sapply (df [,1:number.of.points], as.numeric)


# replace by 0 if class B
for (j in 1:rownumber)
    {
     for ( i in 1:number.of.points) 
       {
          if (df [j,i+number.of.points] =="B") { df [j,i] <- 0 } 
          else { df [j,i] <- df [j,i] }
       }
    }

# Sums for Class A
my.sum.for.A <- matrix(nrow =rownumber, ncol= number.of.points)
for (l in 1:rownumber) 
    {
     for ( k in 1:number.of.points) 
     { my.sum.for.A [l,k] <- sum( df [l,1:k]) }
  
    }

請隨時評論和改進...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM