按组查找数据集中每个变量的差异(相减)

虚荣地

我有大约20个变量的数据集。数据是在三年(2012-2014年)内收集的,每年每个观察值都可以按Site进行分组Plot

我想找出几年之间每次观察的差异(即价值变化)。自2012年开始收集数据以来,我想找出2013年与2012年之间以及2014年与2013年之间的区别(2014年-2012年也将受到欢迎)。

首先,我对两者进行了一些尝试,plyrdata.table试图找出仅一个变量的年份之间的差异。这些都没有成功。我不确定如何Year在按Site分组时调用减法运算Plot而且,我不确定在哪里存储它。

我提供了一个仅包含3个变量的示例数据集。我还提供了示例所需的输出(output),但是格式并不重要。我对这些价值观更感兴趣。

如果ddplydata.table似乎是不错的选择,我将不胜感激。如果它们似乎是错误的工作工具,那么我也希望获得这些信息。尽管此处未包含完整日期,但完整日期(YYYY-mm-dd)可以包含在数据集中。PlotSite给定年份的同一天和同一月观察到内的所有

require(plyr)
require(data.table)
# df data.frame
df <- structure(list(Site = c(1, 1, 2, 2, 2, 3.2, 3.2, 3.2, 3.2, 1, 
1, 2, 2, 2, 3.2, 3.2, 3.2, 3.2, 1, 1, 2, 2, 2, 3.2, 3.2, 3.2, 
3.2), Plot = c(1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 1L, 2L, 1L, 
2L, 3L, 1L, 2L, 3L, 4L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L), 
    Year = c(2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 
    2012L, 2012L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
    2013L, 2013L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
    2014L, 2014L), V1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L), VH1 = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 10L, 10L, NA, 10L, 10L, 
    10L, 10L, 10L, 10L), V2 = c(3L, 3L, 3L, 3L, 3L, NA, 3L, 3L, 
    3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L)), .Names = c("Site", "Plot", "Year", 
"V1", "VH1", "V2"), row.names = c(NA, -27L), class = "data.frame")

# as data.table
dt <- as.data.table(df)

# ddply attempt for just one variable: V1
ans.d <- ddply(df, .(Year, Site, Plot), transform, V1.1213=c(NA,diff(V1)))

# data.table attempt for just one variable: V1
KEY <- c("Year", "Site", "Plot")
setkeyv(dt, KEY)
ans.dt <- dt[,diff:=c(NA,diff(V1)),by=KEY]    
ans.dt1 <- dt[, c('V1.1','V1.1213') := list(V1[1], V1 - V1[1]),by = KEY]

# data table attempt with diff key
KEY2 <- c("Site", "Plot")
setkeyv(dt, KEY2)
ans.dt.k2 <- dt[,diff:=c(NA,diff(V1)),by=Year] 

# example solution
# where V1.1213 is [(V1, Year = 2013) - (V1, Year = 2012)], etc.
output <- structure(list(Site = c(1, 1, 2, 2, 2, 3.2, 3.2, 3.2, 3.2, 1, 
1, 2, 2, 2, 3.2, 3.2, 3.2, 3.2, 1, 1, 2, 2, 2, 3.2, 3.2, 3.2, 
3.2), Plot = c(1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L, 1L, 2L, 1L, 
2L, 3L, 1L, 2L, 3L, 4L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 4L), 
    Year = c(2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 2012L, 
    2012L, 2012L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L, 
    2013L, 2013L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
    2014L, 2014L), V1 = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L), VH1 = c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 10L, 10L, NA, 10L, 10L, 
    10L, 10L, 10L, 10L), V2 = c(3L, 3L, 3L, 3L, 3L, NA, 3L, 3L, 
    3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 20L, 20L, 20L, 20L, 
    20L, 20L, 20L, 20L, 20L), V1.1213 = c(NA, NA, NA, NA, NA, 
    NA, NA, NA, NA, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, -1L, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA), V1.1314 = c(NA, NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L), VH1.1213 = c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, NA, NA, NA, NA, NA, NA, NA, NA, NA), VH1.1314 = c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, 6L, 6L, NA, 6L, 6L, 6L, 6L, 6L, 6L), V2.1213 = c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, -3L, -3L, -3L, -3L, -3L, 
    NA, -3L, -3L, -3L, NA, NA, NA, NA, NA, NA, NA, NA, NA), V2.1314 = c(NA, 
    NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
    NA, NA, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L, 20L)), .Names = c("Site", 
"Plot", "Year", "V1", "VH1", "V2", "V1.1213", "V1.1314", "VH1.1213", 
"VH1.1314", "V2.1213", "V2.1314"), class = "data.frame", row.names = c(NA, 
-27L))
马修
library(dplyr)    
fun <- funs(
  lag1 = .-lag(., order_by = Year, n = 1), 
  lag2 = .-lag(., order_by = Year, n = 2)
)
df %>% 
  group_by(Site, Plot) %>% 
  mutate_each(fun, -Year)

一些解释:

  • mutate_each将参数“ funs()”中指定的函数应用于最后一个参数中指定的变量。将输入data.frame分组(使用group_by)时,它将在每个组中应用该功能。
  • 该参数funs(.-lag(., order_by = Year, n = 2))指定要应用于各列的函数。您可以在中查看其他规范?funs您可以有趣地指定多个功能;您还可以指定新的后缀。

    该函数lagdplyr(见?滞后)允许滞后的载体。lag有两个选择。第一个是,如果需要order_by,可以对在中指定的变量进行重新排序order_by第二个,n指定要滞后的时间段数。例如

    lag(c(1,2,3))
    lag(c(1,2,3), order_by = c(2, 1, 3), n = 1)
    

    我写了order_by = Year,但是如果数据集已经排序(例如在示例中),则不需要它。

  • 最后一个参数-Year,将函数应用于除Year以外的所有变量。请参阅?select

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

计算“严重”分区数据集中的组差异

来自分类Dev

使用data.table按组查找均值差异

来自分类Dev

数据集中每个组的不同样本号

来自分类Dev

按数据框分组并查找组

来自分类Dev

基于大数据集中的子组(A、B、C)查找命中

来自分类Dev

通过从数据框中的每个组中选择1行来查找按列分组的行的组合

来自分类Dev

如何基于R中每个因子变量值的不同比例从数据集中按大小按比例绘制随机样本

来自分类Dev

根据分类变量查找数据集中的常见日期

来自分类Dev

获取每个组的天数差异

来自分类Dev

按差异过滤的性能组

来自分类Dev

按每个组中的最大值过滤数据框

来自分类Dev

如何查找数据框中每个组的日期范围

来自分类Dev

在数据集中查找数据

来自分类Dev

如何计算每个组中的记录数并将其添加到主数据集中?

来自分类Dev

如何根据每个组的月份日期来确定变量和滞后之间的差异?

来自分类Dev

C#:Groupby,数据集中的数据差异

来自分类Dev

如何有效地按组汇总(具有多个输出)数据集中的列?

来自分类Dev

查找跨组通用的变量以获取R中的整洁数据

来自分类Dev

在大型数据集中按最新日期和时间查找不同的少数列值的行

来自分类Dev

熊猫按列分组查找每个组中计数的百分比

来自分类Dev

在多个数据集中具有多个变量的箱线图在 r 中具有相同的组

来自分类Dev

R - 按组计算所有数据切割的差异

来自分类Dev

按组提取数据

来自分类Dev

R中按组的滞后差异

来自分类Dev

SAS中按组的日期差异

来自分类Dev

重塑数据集中的多个变量

来自分类Dev

如何计算数据集中每个标签的tweet数量,然后按标签拆分数据(java)?

来自分类Dev

查找列表中每个元素之间的差异

来自分类Dev

每个组的增量变量

Related 相关文章

  1. 1

    计算“严重”分区数据集中的组差异

  2. 2

    使用data.table按组查找均值差异

  3. 3

    数据集中每个组的不同样本号

  4. 4

    按数据框分组并查找组

  5. 5

    基于大数据集中的子组(A、B、C)查找命中

  6. 6

    通过从数据框中的每个组中选择1行来查找按列分组的行的组合

  7. 7

    如何基于R中每个因子变量值的不同比例从数据集中按大小按比例绘制随机样本

  8. 8

    根据分类变量查找数据集中的常见日期

  9. 9

    获取每个组的天数差异

  10. 10

    按差异过滤的性能组

  11. 11

    按每个组中的最大值过滤数据框

  12. 12

    如何查找数据框中每个组的日期范围

  13. 13

    在数据集中查找数据

  14. 14

    如何计算每个组中的记录数并将其添加到主数据集中?

  15. 15

    如何根据每个组的月份日期来确定变量和滞后之间的差异?

  16. 16

    C#:Groupby,数据集中的数据差异

  17. 17

    如何有效地按组汇总(具有多个输出)数据集中的列?

  18. 18

    查找跨组通用的变量以获取R中的整洁数据

  19. 19

    在大型数据集中按最新日期和时间查找不同的少数列值的行

  20. 20

    熊猫按列分组查找每个组中计数的百分比

  21. 21

    在多个数据集中具有多个变量的箱线图在 r 中具有相同的组

  22. 22

    R - 按组计算所有数据切割的差异

  23. 23

    按组提取数据

  24. 24

    R中按组的滞后差异

  25. 25

    SAS中按组的日期差异

  26. 26

    重塑数据集中的多个变量

  27. 27

    如何计算数据集中每个标签的tweet数量,然后按标签拆分数据(java)?

  28. 28

    查找列表中每个元素之间的差异

  29. 29

    每个组的增量变量

热门标签

归档