我有一个数据集(df),我只想获得整个列变量的摘要统计数据,然后是2个特定处理的变量摘要。到目前为止一切顺利:
summary(var1)
aggregate(var1 ~ treatment, results, summary)
然后我有一个值为1和2的变量。我可以用sum函数计算这些:
sum(var3 == 1)
sum(var3 == 2)
然而,当我试图通过治疗来总结这些:
aggregate(var3 ~ treatment, results, sum var3 == 1)
我收到以下错误:
Error in sum == 1 :
comparison (1) is possible only for atomic and list types
我尝试了很多相同主题的变化,并浏览了我用来帮助我第一次尝试进入R的教科书......但我似乎无法找到答案。
答案 0 :(得分:2)
以下是一个示例数据集(最好包含样本数据以提出问题reproducible)。
set.seed(15)
results<-data.frame(
var1=runif(30),
var3=sample(1:2, 30, replace=T),
treatment=gl(2,15)
)
如果你真的想使用聚合,你可以做
aggregate(var3==1~treatment, results, sum)
# treatment var3 == 1
# 1 1 9
# 2 2 5
但是由于你在计算离散观察值,table()
可能是一次完成所有计数的更好选择
with(results, table(var3, treatment))
# treatment
# var3 1 2
# 1 9 5
# 2 6 10