R 如何从另一列索引的列中提取特定值?

R 如何从另一列索引的列中提取特定值?,r,cumsum,R,Cumsum,我有以下数据,我正在尝试提取cumsum列的最终值。例如,我想从数据帧中获取第8行的总和值为0.7810417,然后对1115行的总和值为0.7282639和1116执行相同的操作。。。1117等 然而,当我在整个数据帧上运行时,我得到以下结果 structure(list(df = c(220.124649739256, 199.217289598068, 199.774511556463, 206.738587849235, 205.766197136359, Inf, Inf, Inf,

我有以下数据,我正在尝试提取cumsum列的最终值。例如,我想从数据帧中获取第8行的总和值为0.7810417,然后对1115行的总和值为0.7282639和1116执行相同的操作。。。1117等

然而,当我在整个数据帧上运行时,我得到以下结果

structure(list(df = c(220.124649739256, 199.217289598068, 199.774511556463, 
206.738587849235, 205.766197136359, Inf, Inf, Inf, 205.103350187295, 
199.567357907284, 212.900103648094, 200.477169383407, Inf, 203.441435413023
)), .Names = "df", row.names = c(NA, 14L), class = "data.frame")
我不确定为什么现在会出现Infvalues,值也会发生显著变化,但是我所做的只是跳过这个命令dfBase R

基尔

解释 dat$Total是我们的原子对象,dat$WEEK是我们的分组变量,tail是我们要应用的函数,1是传递给它的第一个参数,因此我们得到dat$WEEK中每个索引的dat$Total的最后一个值

解释 dat$Total是我们的原子对象,dat$WEEK是我们的分组变量,tail是我们要应用的函数,1是传递给它的第一个参数,因此我们得到dat$WEEK中每个索引的最后一个dat$Total值。

OP的数据集是一个data.table。使用data.table获取每个“周”元素的“总计”最后一行并提取“总计”的方法如下

library(data.table)
df1[, Total[.N], WEEK]$V1
#[1] 0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.3050000
如果目的不是提取列,那么我们可以将其子集并将其作为data.table保存

OP的数据集是一个data.table。使用data.table获取每个“周”元素的“总计”最后一行并提取“总计”的方法如下

library(data.table)
df1[, Total[.N], WEEK]$V1
#[1] 0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.3050000
如果目的不是提取列,那么我们可以将其子集并将其作为data.table保存


您是否打算使用新数据提取每个“wks”df1[,cumsum[.N],wks]$V1的“cumsum”列的最后一个值,df1[,Total[.N],WEEK]$V1[1]0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.3050000您更改了列名,现在的问题或预期行为是什么?感谢您的回复,代码正常工作,但是,当我在整个数据帧上运行它时,仍然会遇到inf问题。我已经编辑了原始问题以显示我得到的输出。首先,停止更改问题:您已经有了四个完全符合您需要的答案。第二,检查您的数据,df$Total中可能有Inf值。顺便说一句,df是一个坏名字,因为它是stats命名空间中的函数。您是否打算为每个“wks”df1[,cumsum[.N],wks]$V1提取“cumsum”列的最后一个值?df1[,Total[.N],WEEK]$V1[1]0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.305000您更改了列名,现在的问题或预期行为是什么?感谢您的回复,代码可以工作,但在整个数据帧上运行时,我仍然遇到inf问题。我已经编辑了原始问题以显示我得到的输出。首先,停止更改问题:您已经有了四个完全符合您需要的答案。第二,检查您的数据,您可能在df$Total中有Inf值。顺便说一句,df是个坏名字,因为它是stats namespace中的函数。谢谢您的回答,它可以工作,但是当我将它应用到整个数据大小时,我遇到了Inf值。我增加了数据大小以显示这一点。可能是什么原因造成的?我猜您的完整data.table需要清理。也许这篇文章会有帮助?感谢您的回答,它可以工作,但是当我将它应用到整个数据大小时,我会遇到inf值。我增加了数据大小以显示这一点。可能是什么原因造成的?我猜您的完整data.table需要清理。也许这篇文章会有帮助?感谢它的工作,但我遇到了与我在上一篇评论中提到的相同的问题。感谢它的工作,但我遇到了与我在上一篇评论中提到的相同的问题。嗯,data.table比我想象的更通用,使R更接近Julia/Matlab索引设施[+1]嗯,data.table比我想象的更通用,使R更接近Julia/Matlab索引功能[+1]
Price <- data %>%
  select(WEEK, price_per_ounce)

test <- transform(Price, Total = ave(price_per_ounce, WEEK, FUN = cumsum))

test <- head(test, 100)
#dput(test)

df <- test[, Total[.N], WEEK]$V1
df <- as.data.frame(df)
df <- head(df, 14)
dput(df)
library(dplyr)   
df %>% group_by(wks)%>%
filter(row_number()==n())
aggregate(df$cumsum, by = list(df$wks), FUN = tail, n = 1)
tapply(dat$Total, dat$WEEK, tail, 1)
#     1114      1115      1116      1117      1118      1119      1120      1121 
#0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.3050000 
library(data.table)
df1[, Total[.N], WEEK]$V1
#[1] 0.7810417 0.7282639 0.6249306 0.3890972 0.7231250 0.8202778 0.7012500 0.3050000
df1[, .(Total = Total[.N]),  WEEK]