这是我的第一篇文章,所以如果我没有足够具体,我会道歉。计算从一个数据框中的列到按照多个行的顺序中的每个月的月数
我有一个月的序列和一个约100行的数据框,每个都有一个唯一的标识符。每个标识符都与启动日期相关联。我正在计算序列中每月每个唯一标识符启动后的月数。我已经尝试写一个for循环来完成这个。
下例:
# Build Example Data Frame #
x_example <- c("A","B","C","D","E")
y_example <- c("2013-10","2013-10","2014-04","2015-06","2014-01")
x_name <- "ID"
y_name <- "StartUp"
df_example <- data.frame(x_example,y_example)
names(df_example) <- c(x_name,y_name)
# Create Sequence of Months, Format to match Data Frame, Reverse for the For Loop #
base.date <- as.Date(c("2015-11-1"))
Months <- seq.Date(from = base.date , to = Sys.Date(), by = "month")
Months.1 <- format(Months, "%Y-%m")
Months.2 <- rev(Months.1)
# Create For Loop #
require(zoo)
for(i in seq_along(Months.2))
{
for(j in 1:length(summary(as.factor(df_example$ID), maxsum = 100000)))
{
Active.Months <- 12 * as.numeric((as.yearmon(Months.2 - i) - as.yearmon(df_example$StartUp)))
}
}
背后的for循环是在Months.2序列中的每个记录,会有的月数的计算,以该记录(年月日)从想法每个唯一标识符的启动月份。然而,这已被踢回错误:
Error in Months.2 - i : non-numeric argument to binary operator
我不知道该解决方案是什么,或者,如果我使用的for循环正常了这一点。
在此先感谢您解决此问题的任何帮助!
编辑:这是我希望我的预期的结果将是(这仅仅是一个样品有序列中个月以上):
ID Start Up Month 2015-11 2015-12 2015-12 2016-02 2016-03
1 A 2013-10 25 26 27 28 29
2 B 2013-10 25 26 27 28 29
3 C 2014-04 19 20 21 22 23
4 D 2015-06 5 6 7 8 9
5 E 2014-01 22 23 24 25 26
你能发表一个你期待什么输出的例子,以便人们更容易正确回答你的问题吗? –
我加了预期的输出,对不起! – DW1