我有一个很长的数据框,有不同的图,采样日期和值。 下面是数据框的一个例子。
如果结束日期不同,我如何计算图A和图B的列“值”的总和?
关于绘图的示例结束日期是5.1.2010,总和将是25,而绘图B是3.1.2010,因此总和将是12。 我希望这个问题可以理解吗?
数据框看起来像这样:
date <- c("1.1.10", "1.1.10", "2.1.10", "2.1.10", "3.1.10", "3.1.10", "4.1.10", "4.1.10", "5.1.10", "5.1.10")
date <- as.Date(date, "%d.%m.%y")
plot <- c("A","B","A","B","A","B","A","B","A","B")
value <- seq(1:10)
data.frame(date, plot, value)
答案 0 :(得分:2)
首先,像'plot'这样的名字已经在R中被采用,所以不给它们赋值是很好的形式。首先将它粘贴到data.frame或类似的,然后使用逻辑:
dates <- as.Date(c("1.1.10", "1.1.10", "2.1.10", "2.1.10", "3.1.10", "3.1.10", "4.1.10", "4.1.10", "5.1.10", "5.1.10"), "%d.%m.%y")
plots <- c("A","B","A","B","A","B","A","B","A","B")
value <- seq(1:10)
mydf <- data.frame(dates, plots, value)
endA <- as.Date("5.1.10", "%d.%m.%y")
endB <- as.Date("3.1.10", "%d.%m.%y")
sum(mydf$value[mydf$plots=="A" & mydf$dates <= endA]) # 25
sum(mydf$value[mydf$plots=="B" & mydf$dates <= endB]) # 12