以下是我的意思:
让我们使用R附带的void PlaySentence(String path){
try {
AssetFileDescriptor afd = getAssets().openFd(path);
player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
player.prepare();
player.start();
}
catch (Exception ex)
{
if (BuildConfig.DEBUG)
Log.d(TAGName, ex.getMessage());
}
}
数据集作为一个简单的例子。在这个数据集中有3列:长度,补充,剂量。剂量和补充剂都是长度的解释变量。例如,将剂量与长度作图并使用补充剂作为一个因素是很容易的。例如,使用qplot你就可以这样做:
ToothGrowth
接下来我要做的就是随着剂量的增加,看到每种补品的平均增长趋势。即,构建一个非常相似的图,除了我希望y变量是基于剂量和补充的值的平均值。
我不确定如何通过调用qplot来实现这一点。在我看来,或许要做的事情是计算新的列或其他东西,但我也不确定如何使用类似qplot(x = ToothGrowth$dose , y = ToothGrowth$len, color = ToothGrowth$supp)
的东西来构建基于多个解释变量的新列。 / p>
答案 0 :(得分:2)
我认为这可能是您正在寻找的,但您可能需要澄清。以下是使用dplyr
Avg_ToothGrowth <- ToothGrowth %>%
group_by(supp, dose) %>%
summarise(avg_len = mean(len)) %>%
ungroup
qplot(dose, avg_len, data = Avg_ToothGrowth, color = supp)
这可以让您接近,但您可能需要通过dplyr
教程才能更好地了解group_by
和summarise
的用法。我使用ungroup
来删除剩余的分组,因为它们不需要(可能有更好的方法)。
修改强>
您还可以使用每个组的趋势线绘制原始数据
# With confidence interval
qplot(dose, len, data = ToothGrowth, color = supp, geom = c('smooth', 'point'), method = 'lm')
# Without confidence interval
qplot(dose, len, data = ToothGrowth, color = supp, geom = c('smooth', 'point'), method = 'lm', se=FALSE)
答案 1 :(得分:2)
我个人更喜欢使用dplyr
作为steveb,但如果您不熟悉该软件包,没有它的解决方案可能更容易理解。函数aggregate()
可以帮助您:
tg <- aggregate(len ~ dose + supp, mean, data = ToothGrowth)
第一个参数是一个公式,它告诉函数它应该为len
和dose
具有相同值的所有行聚合列supp
的值。第二个参数给出了用于聚合的函数,即mean
。所以,实际做的是以下几点:
数据框的行按dose
和supp
分组。因此,组中的所有行都具有dose
和supp
的相同值。
然后,对于每个组,函数mean()
将应用于列len
。
这正是dplyr
解决方案中正在发生的事情,但在那里,这两个步骤更明确地阐明了。
然后可以绘制结果数据框:
qplot(dose, len, colour = supp, data = tg)