我想计算符合两个条件的匹配项,并将该值分配给一个单元格(单元格是正确的单词吗?)。到目前为止,我已尝试使用nrow()
和subset()
来完成这项工作,如下所示:
for (n in nrow(data)) {data[n,17] <- nrow(subset(data,(REP == data$REP[n]) & (Was.Sent. == "Sent")))/nrow(subset(data,REP == data$REP[n]))}
到目前为止,每个单元格都填充为“NA”。我做错了什么,有更好/更简单的方法吗?
答案 0 :(得分:3)
对于每一行,您都可以计算行中REP的平均已发送项目数。实际上可以使用ave()
函数更好地完成。
这是一个示例数据集
data <- data.frame(
Was.Sent=c("Sent","No")[c(1,1,2,1,2,1,2,1)],
REP=c(1,2,3,1,2,3,1,2)
)
此处的代码将添加具有所需百分比的新列
data$psent<-with(data, ave(Was.Sent=="Sent", REP, FUN=mean))
如果我查看结果,我会看到
cbind(data,psent)[order(data$REP, data$Was.Sent),]
# Was.Sent REP psent
#7 No 1 0.6666667
#1 Sent 1 0.6666667
#4 Sent 1 0.6666667
#5 No 2 0.6666667
#2 Sent 2 0.6666667
#8 Sent 2 0.6666667
#3 No 3 0.5000000
#6 Sent 3 0.5000000