我只是试图计算“停止”的发生次数。在变量(A)中,对于3个分组变量(B,C,D)中的每一个。
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
任何帮助将不胜感激 - 请要求澄清
答案 0 :(得分:2)
我会转换为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
答案 1 :(得分:0)
如果您在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
答案 2 :(得分:0)
你的意思是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
答案 3 :(得分:0)
library(dplyr)
df%>%filter(A=='stop')%>%summarise_each(funs(sum),-1)