【问题标题】:Successive conditional sum in RR中的连续条件和
【发布时间】:2021-05-30 23:15:11
【问题描述】:

我正在尝试在数据框中编写条件和。我尝试将“sum”函数与“which”函数一起使用,但无法使其工作。这是一个玩具示例:

名为“距离”的矩阵包括从给定点 N 到其他 3 个点的距离,用于 2 次观察。
对于第一个观察,N1 是 N 的最近邻,第二个最近邻是 N2,第三个是 N3。
每个点都属于一个类(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) 与其所有属于 A 类的第 i 个最近邻之间的距离之和是多少?

在玩具示例中,对于第一次观察,问题可以通过以下方式说明/分解:

(A) N 与其属于 A 类的最近邻之间的距离是多少
(B) N 与其属于 A 类的第二近邻之间的距离是多少
(C) N 与其属于 A 类的第三近邻之间的距离是多少
(D)是A,N到第一个邻居的距离之和
(E)是(A)+(B),N和它的第一个邻居之间的距离之和,N和它的第二个最近邻居之间的距离...

碰巧,有人有建议吗?谢谢

【问题讨论】:

    标签: r nearest-neighbor


    【解决方案1】:

    ...为垃圾代码奖穿衣......

    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]) }
      
        }
    

    请随时评论和改进...

    【讨论】:

      最近更新 更多