我只是試圖在變量(A)中爲3個分組變量(B,C,D)中的每一個計算「停止」的發生次數。基於多個分組變量的計數r
A B C D
start 1 1 1
start 1 1 1
start 2 1 2
start 2 1 2
stop 1 2 1
stop 1 2 1
stop 2 2 1
任何幫助,將不勝感激 - 請要求澄清
我只是試圖在變量(A)中爲3個分組變量(B,C,D)中的每一個計算「停止」的發生次數。基於多個分組變量的計數r
A B C D
start 1 1 1
start 1 1 1
start 2 1 2
start 2 1 2
stop 1 2 1
stop 1 2 1
stop 2 2 1
任何幫助,將不勝感激 - 請要求澄清
我會轉換成data.table
:
DT <- as.data.table(DF)
DT[A == 'stop', lapply(.SD, sum), .SDcols=c('B', 'C', 'D')]
B C D
1: 4 6 3
如果你在hadleyverse工作,你可以做到這一點使用reshape2
和dplyr
。首先,您將使用reshape
來融合數據,以便B,C,D中的每一個都有自己的行。然後像往常一樣,您可以group_by
和tally
。
library(reshape2)
library(dplyr)
melt(df) %>%
filter(A == "stop") %>%
group_by(variable, value) %>%
tally()
# variable value n
# 1 B 1 2
# 2 B 2 1
# 3 C 2 3
# 4 D 1 3
你是指B,C和D的每種組合?如果所以這裏是一個基礎R解決方案:
df <- read.table(text = "A B C D
start 1 1 1
start 1 1 1
start 2 1 2
start 2 1 2
stop 1 2 1
stop 1 2 1
stop 2 2 1", header = TRUE)
num.stops <- aggregate((A == "stop") ~ B + C + D, df, FUN = sum)
# B C D (A == "stop")
# 1 1 1 1 0
# 2 1 2 1 2
# 3 2 2 1 1
# 4 2 1 2 0
library(dplyr)
df%>%filter(A=='stop')%>%summarise_each(funs(sum),-1)
目前尚不清楚你想要達到的目的。你可以看看'A ==「stop」'的行數,但我不是這種情況。提供所需的輸出。 – SabDeM