R 在ddply汇总期间从df中选择一个值

R 在ddply汇总期间从df中选择一个值,r,plyr,R,Plyr,我想使用ddply和summary来获得数年数据的月度中位数。我可以成功地做到这一点。然而,我也希望有一个列包含一年数据的值。我知道其他的方法来添加这一点,但我想在ddply线内这样做。数据在底部 如果所有年份的中位数为16,2018年的值为30,则结果的第一行如下所示: Month Median 2018 Apr 16.0 30 以下是我尝试过的: 这与预期的效果一样: Summary您可以将特定年份值子集,然后合并: 可以将特定年份值子集,然后合并: 如果我们想在plyr中完成

我想使用ddply和summary来获得数年数据的月度中位数。我可以成功地做到这一点。然而,我也希望有一个列包含一年数据的值。我知道其他的方法来添加这一点,但我想在ddply线内这样做。数据在底部

如果所有年份的中位数为16,2018年的值为30,则结果的第一行如下所示:

Month Median 2018
 
Apr   16.0   30
以下是我尝试过的: 这与预期的效果一样:

Summary您可以将特定年份值子集,然后合并:

可以将特定年份值子集,然后合并:


如果我们想在plyr中完成这一切,请使用plyr::join

或者如果我们想在ddply内做到这一点


如果我们想在plyr中完成这一切,请使用plyr::join

或者如果我们想在ddply内做到这一点


普利尔已经退休了。尝试改用dplyr。我不清楚您希望如何显示最终输出。你每年都会有一个新专栏吗?@Ronak Shah我只是在寻找我选择的年份的价值。换句话说,我希望能够在代码中输入2018,并让它返回一列,其中包含2018值,每个月汇总一个值。然后,如果我愿意,我可以将2018年切换到2019年,然后再次运行代码,这样我就可以有一列2019年的值。plyr已经失效。尝试改用dplyr。我不清楚您希望如何显示最终输出。你每年都会有一个新专栏吗?@Ronak Shah我只是在寻找我选择的年份的价值。换句话说,我希望能够在代码中输入2018,并让它返回一列,其中包含2018值,每个月汇总一个值。然后,如果我愿意,我可以将2018切换到2019,然后再次运行代码,这样我就有了一列2019的值。这正是我想要的输出。我仍然想在plyr代码中找到一种方法来实现这一点,但这可能需要知道。正如你提到的,普莱尔已经退休了。我想,我很难放弃它,因为在过去的几年里,我已经尝试过很多次了,但是我没有找到一个方法,这让我发疯。这正是我想要的结果。我仍然想在plyr代码中找到一种方法来实现这一点,但这可能需要知道。正如你提到的,普莱尔已经退休了。我想,我只是很难放弃它,因为在过去的几年里,我已经尝试过很多次了,而且我还没有找到一条路,这让我发疯。
year = 2018
data <- subset(df, Year == year, select = -Year)
names(data)[names(data) == 'Value'] <- year
merge(Summary, data, by = 'Month', all.x = TRUE)

#   Month Median 2018
#1    Apr   16.0   30
#2    Aug   47.5   62
#3    Dec   70.0   NA
#4    Feb   83.0   NA
#5    Jan   96.0   NA
#6    Jul  118.5  133
#7    Jun  150.5  165
#8    Mar  175.0  182
#9    May  199.0  213
#10   Nov  223.5  232
#11   Oct  248.0  262
#12   Sep  279.5  294
plyr::join(Summary, subset(df, Year == 2018, select = -Year))
#    Month Median Value
#1    Apr   16.0    30
#2    Aug   47.5    62
#3    Dec   70.0    NA
#4    Feb   83.0    NA
#5    Jan   96.0    NA
#6    Jul  118.5   133
#7    Jun  150.5   165
#8    Mar  175.0   182
#9    May  199.0   213
#10   Nov  223.5   232
#11   Oct  248.0   262
#12   Sep  279.5   294
plyr::ddply(df, ~ Month, summarise, Median = median(Value),
        `2018` = Value[Year == 2018][1])
#   Month Median 2018
#1    Apr   16.0   30
#2    Aug   47.5   62
#3    Dec   70.0   NA
#4    Feb   83.0   NA
#5    Jan   96.0   NA
#6    Jul  118.5  133
#7    Jun  150.5  165
#8    Mar  175.0  182
#9    May  199.0  213
#10   Nov  223.5  232
#11   Oct  248.0  262
#12   Sep  279.5  294