簡體   English   中英

根據不同列中的值計算值的出現

[英]Count occurrences of values based on value in different columns

我有這樣的桌子。 列名稱V1,V2,V3,V4

V1 | V2 | V3 | V4
2  |  4 | 3  |  1
2  |  1 | 3  |  1
2  |  3 | NA |  NA
2  |  4 | 3  |  1
3  | NA | NA | NA

我如何計算數字“ 3”的出現次數,除非數字“ 1”在同一行之后出現,我不希望對其進行計數。

在上面的示例中,值“ 3”的出現是2倍

編輯:

這是我的數據樣本,共有31列...我想做的是,我想計算一個特定值發生了多少次,除非下一列中出現另一個特定值。

從圖片示例中,我想計算值112的出現次數,它出現了多少次? 除非它在下一列中包含“ 116”,否則從計數中扣除。

如果需要更多說明,請發表評論。

在此處輸入圖片說明

我會嘗試:

sum(tb[,1:3]==3 & (tb[,2:4]!=1 | is.na(tb[,2:4])),na.rm=TRUE)
#[1] 2

我使用的數據:

tb <- structure(c(2L, 2L, 2L, 2L, 3L, 4L, 1L, 3L, 4L, NA, 3L, 3L, NA, 
3L, NA, 1L, 1L, NA, 1L, NA), .Dim = c(5L, 4L), .Dimnames = list(
    NULL, c("V1", "V2", "V3", "V4")))

在以下代碼中,我假設“之后”是指其右側的列。

您想要的是事件的總和:“ x列和x + 1列中的3與1不同”。

您可以將其轉換為以下代碼(盡管可能效率不高):

TOTAL<-0    
for( i in 1:(ncol(df)-1){
   TOTAL<-TOTAL + sum(df[,i]==3 & df[,i+1]!=1, na.rm= TRUE)
}

編輯:考慮到最后一列

TOTAL<-TOTAL+sum(df[,ncol(df)]==3 , na.rm = TRUE)

因此,完整的代碼是:

TOTAL<-0    
for( i in 1:(ncol(df)-1){
   TOTAL<-TOTAL + sum(df[,i]==3 & df[,i+1]!=1,na.rm = TRUE)
}
TOTAL<-TOTAL+sum(df[,ncol(df)]==3, na.rm = TRUE)

暫無
暫無

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

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