如何解决将每行除以R中的上一行
我有 R个数据框:
city hour value
0 NY 0 12
1 NY 12 24
2 LA 0 3
3 LA 12 9
对于每个城市,我希望将每行除以上一行并将结果写入新的数据框中。所需的输出是:
city ratio
NY 2
LA 3
解决方法
您可以像下面一样尝试aggregate
aggregate(value ~city,df,function(x) x[-1]/x[1])
给出
city value
1 LA 3
2 NY 2
数据
> dput(df)
structure(list(city = c("NY","NY","LA","LA"),hour = c(0L,12L,0L,12L),value = c(12L,24L,3L,9L)),class = "data.frame",row.names = c("0","1","2","3"))
,
您可以使用lag
获取先前的值,将每个value
的{{1}}除以先前的值,然后删除city
行。
NA
在library(dplyr)
df %>%
arrange(city,hour) %>%
group_by(city) %>%
summarise(value = value/lag(value)) %>%
na.omit()
# city value
# <chr> <dbl>
#1 LA 3
#2 NY 2
中,我们可以通过data.table
进行此操作:
shift
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。