R 仅使用计算中的某些列获取每个ID集的特定因子的行和

R 仅使用计算中的某些列获取每个ID集的特定因子的行和,r,dataframe,R,Dataframe,解决- 我将xraynaud建议的代码与行和相结合,以获得正确的和向量。现在,我只需要在这之前添加一些代码,以确保没有缺少“M”类别的提供者 以下是获取行和的代码行: rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category=='M',]$Provider),sum)[,-1]) rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category==

解决- 我将xraynaud建议的代码与行和相结合,以获得正确的和向量。现在,我只需要在这之前添加一些代码,以确保没有缺少“M”类别的提供者

以下是获取行和的代码行:

rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category=='M',]$Provider),sum)[,-1])
rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category=='M',]$Provider),sum)[,-1])
我有一个数据框架,其中有4个不同类别的约800个供应商,分别为1、2、3和“M”。 因此,每个供应商每月统计1-4个不同类别(并非所有供应商都有所有4个类别)。这是数据帧的前两列。 我想做的是得到每个提供者最后3个月(df的最后3列)和之前3个月(倒数第二个3列)“M”类别的总和。 因此,我需要两个变量(显然,将为这些变量运行两行不同的代码),quartemsum和lquartemsum。当一个提供程序没有“M”类别时,我希望它假定该提供程序的和为0,这样每个提供程序都在最终变量中。 我该怎么做

编辑-将评论移动到原始帖子中:


到目前为止,我所想到的最好的方法是使用聚合和求和

aggregate(df[,24:26],by=list(df$Provider),sum)
但是,不幸的是,我不能添加另一个过滤级别来只获取“M”类别(24:26是最后3列,最后3个月的计数)。我可以使用

list(df$092014[df$PRoA=='M']) 
但是,一个月的数据并不是特别有用,它跳过了没有“M”类别的提供者。最后,我尝试了rowSums(我成功地使用它来获得过去3个月的总金额-

rowSums(aggregate(df[,24:26],by=list(df$Provider),sum)[,-1])
-但无法添加足够的过滤级别,仅获取“M”和

以下是数据的结构:

Provider|Category|102012Count|112012Count|...|092014Count

10001|1|19|33|...|29

10001|2|103|109|...|66

10001|3|59|44|...|24

10001|M|166|174|...|233

10007|2|0|0|...|21

10007|3|0|0|...|45

10007|M|0|0|...|32

10009|2|47|55|...|39

10012|1|109|107|...|113

在单独的答案中发布解决方案,以便我可以将其标记为已解决

我将xraynaud建议的代码与行和结合起来,以获得正确的和向量。现在我只需要在这之前添加一些代码,以确保没有缺少“M”类别的提供程序

以下是获取行和的代码行:

rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category=='M',]$Provider),sum)[,-1])
rowSums(aggregate(df[df$Category=='M',24:26],by=list(df[df$Category=='M',]$Provider),sum)[,-1])

到目前为止,我想到的最好的方法是使用聚合和求和(df[,24:26],by=list(df$Provider),sum),但是,不幸的是,我不能在这上面添加另一个级别的过滤来只得到“M”类别(24:26是最后3列,最后3个月的计数)。我可以用list(df$092014)得到一个月的“M”计数[df$PRoA=='M'])但是,一个月的数据并不是特别有用,它跳过了没有'M'类别的提供者。最后,我尝试了rowSums(我成功地使用它获得了过去3个月的总和-rowSums(聚合(df[,24:26],by=list(df$Provider),sum)[,x])-x是要排除的列的向量,但无法添加足够的筛选级别以仅获取“M”和。如果您向我们显示数据的外观,会更容易,但为什么不仅为M类别进行聚合?
aggregate(df[df$category='M',24:26],by=list(df$Provider),sum)
当我运行此命令时,我得到一个错误:参数必须具有相同的长度。错误显示df[df$Category==是有问题的部分。我将编辑原始帖子以显示数据结构。我的错,我忘记了更新by=list()参数。请尝试
聚合(df[df$Category='M',24:26],by=list(df[df$categegory='M',]$Provider),sum)