在R中找到具有相同扩展名的不同数据的每一行的最大值

胡萨梅丁·泰西

这是我的数据;

ht<-structure(list(`1-2006` = structure(c(1.6, 1.6, 1.6, 1.6, 0.208, 
0.405, 0.527, 0.818, 2.2, 3, 2.2, 3, 3, 3, 3, 3.2, 4.6, 5.2), .Names = c("nmaxm5", 
"nmaxm10", "nmaxm15", "nmaxm30", "dmaxm5", "dmaxm10", "dmaxm15", 
"dmaxm30", "maxhourly", "maxh2", "maxh3", "maxh4", "maxh5", "maxh6", 
"maxh8", "maxh12", "maxh18", "maxdaily")), `1-2007` = structure(c(0.8, 
1.4, 2, 3, 2.345, 4.085, 4.884, 4.884, 3.8, 5.2, 5.2, 5.6, 5.6, 
5.6, 5.6, 5.6, 5.6, 5.6), .Names = c("nmaxm5", "nmaxm10", "nmaxm15", 
"nmaxm30", "dmaxm5", "dmaxm10", "dmaxm15", "dmaxm30", "maxhourly", 
"maxh2", "maxh3", "maxh4", "maxh5", "maxh6", "maxh8", "maxh12", 
"maxh18", "maxdaily")), `2-2006` = structure(c(0.8, 1, 1, 1.2, 
0.232, 0.464, 0.691, 1.32, 2.2, 3.2, 4.4, 4.2, 5.8, 5, 6.8, 7.6, 
9, 8.8), .Names = c("nmaxm5", "nmaxm10", "nmaxm15", "nmaxm30", 
"dmaxm5", "dmaxm10", "dmaxm15", "dmaxm30", "maxhourly", "maxh2", 
"maxh3", "maxh4", "maxh5", "maxh6", "maxh8", "maxh12", "maxh18", 
"maxdaily")), `2-2007` = structure(c(0.4, 0.6, 0.8, 1.2, 0.643, 
1.218, 1.577, 3.128, 1.8, 2.4, 2.4, 3.8, 3.8, 3, 3.8, 3.8, 3.8, 
4), .Names = c("nmaxm5", "nmaxm10", "nmaxm15", "nmaxm30", "dmaxm5", 
"dmaxm10", "dmaxm15", "dmaxm30", "maxhourly", "maxh2", "maxh3", 
"maxh4", "maxh5", "maxh6", "maxh8", "maxh12", "maxh18", "maxdaily"
)), `3-2006` = structure(c(1.6, 3.2, 2.6, 4.4, 0.575, 0.947, 
1.306, 2.184, 4.4, 5.4, 8.6, 7.2, 7.4, 8.8, 8, 8.8, 11.2, 13.8
), .Names = c("nmaxm5", "nmaxm10", "nmaxm15", "nmaxm30", "dmaxm5", 
"dmaxm10", "dmaxm15", "dmaxm30", "maxhourly", "maxh2", "maxh3", 
"maxh4", "maxh5", "maxh6", "maxh8", "maxh12", "maxh18", "maxdaily"
)), `3-2007` = structure(c(0.6, 0.8, 1.2, 2, 0.62, 1.239, 1.859, 
3.34, 3.8, 5.6, 8.2, 9.2, 10.2, 9.8, 9.8, 9.8, 11.2, 13.6), .Names = c("nmaxm5", 
"nmaxm10", "nmaxm15", "nmaxm30", "dmaxm5", "dmaxm10", "dmaxm15", 
"dmaxm30", "maxhourly", "maxh2", "maxh3", "maxh4", "maxh5", "maxh6", 
"maxh8", "maxh12", "maxh18", "maxdaily"))), .Names = c("1-2006", 
"1-2007", "2-2006", "2-2007", "3-2006", "3-2007"))

如您所见,列表中有6个元素。1-2006, 1-2007, 2-2006, 2-2007, 3-2006, 3-2007
我想查找的每一行的最大值1-2006, 2-2006, 3-2006,也适用于1-2007, 2-2007, 3-2007

最终我会得到;

2006

nmax5 1.6  (the max. value between `1-2006, 2-2006, 3-2006`)
nmax10 3.2 (the max. value between `1-2006, 2-2006, 3-2006`)
nmax15 2.6  .
.           .
.
.


2007

nmax5 0.8
nmax10 1.4
nmax15 2
.
.
.

除了问题

如果每个数据(1-2006,1-2007 ...)是如下列表,该怎么办?

data<-structure(list(`1-2006` = structure(list(max = structure(c(1.6, 
1.6, 1.6, 1.6, 0.208, 0.405, 0.527, 0.818, 2.2, 3, 2.2, 3, 3, 
3, 3, 3.2, 4.6, 5.2), .Names = c("nmaxm5", "nmaxm10", "nmaxm15", 
"nmaxm30", "dmaxm5", "dmaxm10", "dmaxm15", "dmaxm30", "maxhourly", 
"maxh2", "maxh3", "maxh4", "maxh5", "maxh6", "maxh8", "maxh12", 
"maxh18", "maxdaily")), pars = structure(c(4.31546117106427, 
0.820365947190018, 0.0801520102681417, 1.23559346429995, 0.165928116911697, 
4.9018542025384), .Names = c("a", "l", "v", "k", "f", "mx")), 
    stats = structure(list(mean1 = 0.0351706036745407, mean6 = 0.209375, 
        mean12 = 0.41875, mean24 = 0.8375, var1 = 0.0274966155546346, 
        var6 = 0.301498015873016, var12 = 0.749314516129032, 
        var24 = 2.0385, pdr1 = 0.921259842519685, pdr6 = 0.71875, 
        pdr12 = 0.625, pdr24 = 0.375, cov1lag1 = 0.00862854839737093, 
        cov6lag1 = 0.112977142333984, cov12lag1 = 0.296668701171875, 
        cov24lag1 = 0.234755859375), .Names = c("mean1", "mean6", 
    "mean12", "mean24", "var1", "var6", "var12", "var24", "pdr1", 
    "pdr6", "pdr12", "pdr24", "cov1lag1", "cov6lag1", "cov12lag1", 
    "cov24lag1")), dismax = c(0.208, 0.405, 0.527, 0.818), normax = c(1.6, 
    1.6, 1.6, 1.6), corr = NA_real_), .Names = c("max", "pars", 
"stats", "dismax", "normax", "corr")), `1-2007` = structure(list(
    max = structure(c(0.8, 1.4, 2, 3, 2.345, 4.085, 4.884, 4.884, 
    3.8, 5.2, 5.2, 5.6, 5.6, 5.6, 5.6, 5.6, 5.6, 5.6), .Names = c("nmaxm5", 
    "nmaxm10", "nmaxm15", "nmaxm30", "dmaxm5", "dmaxm10", "dmaxm15", 
    "dmaxm30", "maxhourly", "maxh2", "maxh3", "maxh4", "maxh5", 
    "maxh6", "maxh8", "maxh12", "maxh18", "maxdaily")), pars = structure(c(9.43730555970531, 
    0.355744546440369, 0.0141306464171967, 2.50913042364416, 
    0.368250713406274, 92.0687563990534), .Names = c("a", "l", 
    "v", "k", "f", "mx")), stats = structure(list(mean1 = 0.0186770428015564, 
        mean6 = 0.111627906976744, mean12 = 0.223255813953488, 
        mean24 = 0.436363636363636, var1 = 0.0359857707389962, 
        var6 = 0.390216142270862, var12 = 0.800398671096346, 
        var24 = 1.5795670995671, pdr1 = 0.972762645914397, pdr6 = 0.895348837209302, 
        pdr12 = 0.86046511627907, pdr24 = 0.772727272727273, 
        cov1lag1 = 0.0103119680100725, cov6lag1 = 0.00320827096985171, 
        cov12lag1 = -0.0323976505213377, cov24lag1 = -0.199068369646882), .Names = c("mean1", 
    "mean6", "mean12", "mean24", "var1", "var6", "var12", "var24", 
    "pdr1", "pdr6", "pdr12", "pdr24", "cov1lag1", "cov6lag1", 
    "cov12lag1", "cov24lag1")), dismax = c(2.345, 4.085, 4.884, 
    4.884), normax = c(0.8, 1.4, 2, 3), corr = 0.848495355933634), .Names = c("max", 
"pars", "stats", "dismax", "normax", "corr"))), .Names = c("1-2006", 
"1-2007"))

如何max为每个数据(1-2006、1-2007)选择部分,而不是ht下面的代码?

lapply(split(ht, sub("^\\d+-", "", names(ht))), function(x) 
         apply(do.call(rbind, x), 2, max))
阿克伦

基于业务方案的更新,我们splitlist基础上的子串names“HT”的rbind内部列表do.call,并兼用colMaxs(从matrixStats

library(matrixStats)
lapply(split(ht, sub("^\\d+-", "", names(ht))), function(x) 
         colMaxs(do.call(rbind, x)))

或使用applywithMARGIN = 2遍历列以获取max

lapply(split(ht, sub("^\\d+-", "", names(ht))), function(x) 
         apply(do.call(rbind, x), 2, max))
#$`2006`
#   nmaxm5   nmaxm10   nmaxm15   nmaxm30    dmaxm5   dmaxm10   dmaxm15   dmaxm30 maxhourly     maxh2     maxh3     maxh4     maxh5     maxh6     maxh8 
#    1.600     3.200     2.600     4.400     0.575     0.947     1.306     2.184     4.400     5.400     8.600     7.200     7.400     8.800     8.000 
#   maxh12    maxh18  maxdaily 
#    8.800    11.200    13.800 

#$`2007`
#   nmaxm5   nmaxm10   nmaxm15   nmaxm30    dmaxm5   dmaxm10   dmaxm15   dmaxm30 maxhourly     maxh2     maxh3     maxh4     maxh5     maxh6     maxh8 
#    0.800     1.400     2.000     3.000     2.345     4.085     4.884     4.884     3.800     5.600     8.200     9.200    10.200     9.800     9.800 
#   maxh12    maxh18  maxdaily 
#    9.800    11.200    13.600 

更新资料

对于更新的问题,我们可以使用提取max元素,[[然后应用相同的代码

ht1 <- lapply(data, "[[", "max")
lapply(split(ht1, sub("^\\d+-", "", names(ht1))), function(x) 
           colMaxs(do.call(rbind, x)))

或者我们可以enframelist元素添加到2列数据集中,并创建一个tbl_df,并按“年”,“名称”分组,得到max

library(dplyr)
library(purrr)
library(tibble)
library(stringr)
map_df(ht, enframe, .id = 'year') %>% 
    group_by(year = str_remove(year, "^\\d+-"), name) %>% 
    summarise(value = max(value)) %>% 
    split(.$year)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在R中的时间序列数据中的每一行中创建最后两行具有最大值的不同列

来自分类Dev

在R中的每一行中找到前一行到后一行的值的最大值

来自分类Dev

在二维numpy数组的每一行中找到N个最大值

来自分类Dev

使用VBA在某些列的每一行中找到最大值

来自分类Dev

我有40401 x 57矩阵,我需要从每一行中找到最大值以及该最大值的对应列索引?

来自分类Dev

如何在每一行中找到最大值并将其转换为特定值

来自分类常见问题

查找具有每一行最大值的列名

来自分类Dev

获取每一行具有最大值的列的名称

来自分类Dev

提取R数据框中另一列中具有最大值的唯一行

来自分类Dev

在 R 中为 DF 中的每一行找到最大的最大值和第二大的最大值

来自分类Dev

Matlab:避免for循环在具有相同标签的值中找到最大值

来自分类Dev

熊猫:在列的每一行中找到最大值,并在另一列中标识相应的值

来自分类Dev

找到每列的最大值和最小值,然后找到每一行的最大值和最小值

来自分类Dev

读取具有相同扩展名的多个文件的模式中的最后一行的最快方法

来自分类Dev

数据帧对每一行的最大值进行归一化

来自分类Dev

计算R中每一行中特定列的后3行最大值

来自分类Dev

子集数据框,以便包含每一行的最大值和列名

来自分类Dev

在python数据框中的每一行中查找最大值

来自分类Dev

在Scala中的Spark数据帧的每一行中查找最大值

来自分类Dev

如何在SQL中找到具有多个最大值的组的最大值?

来自分类Dev

在R中的每一行中找到最接近第一列中值的值

来自分类Dev

找出r中列表中每一行的最大值?

来自分类Dev

R中具有数据帧的每一行的最小值

来自分类Dev

在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

来自分类Dev

R根据另一行找到每个组的最小值和最大值

来自分类Dev

当python的一行中有多个最大值时,在2-dim向量的每一行中查找最大值

来自分类Dev

如果另一列具有相同的值,则将列中每一行的数据插入表中

来自分类Dev

如何在数据框中找到具有列的最小值的第一行

来自分类Dev

遍历具有相同id的所有行,并在不同的表中找到匹配的值

Related 相关文章

  1. 1

    在R中的时间序列数据中的每一行中创建最后两行具有最大值的不同列

  2. 2

    在R中的每一行中找到前一行到后一行的值的最大值

  3. 3

    在二维numpy数组的每一行中找到N个最大值

  4. 4

    使用VBA在某些列的每一行中找到最大值

  5. 5

    我有40401 x 57矩阵,我需要从每一行中找到最大值以及该最大值的对应列索引?

  6. 6

    如何在每一行中找到最大值并将其转换为特定值

  7. 7

    查找具有每一行最大值的列名

  8. 8

    获取每一行具有最大值的列的名称

  9. 9

    提取R数据框中另一列中具有最大值的唯一行

  10. 10

    在 R 中为 DF 中的每一行找到最大的最大值和第二大的最大值

  11. 11

    Matlab:避免for循环在具有相同标签的值中找到最大值

  12. 12

    熊猫:在列的每一行中找到最大值,并在另一列中标识相应的值

  13. 13

    找到每列的最大值和最小值,然后找到每一行的最大值和最小值

  14. 14

    读取具有相同扩展名的多个文件的模式中的最后一行的最快方法

  15. 15

    数据帧对每一行的最大值进行归一化

  16. 16

    计算R中每一行中特定列的后3行最大值

  17. 17

    子集数据框,以便包含每一行的最大值和列名

  18. 18

    在python数据框中的每一行中查找最大值

  19. 19

    在Scala中的Spark数据帧的每一行中查找最大值

  20. 20

    如何在SQL中找到具有多个最大值的组的最大值?

  21. 21

    在R中的每一行中找到最接近第一列中值的值

  22. 22

    找出r中列表中每一行的最大值?

  23. 23

    R中具有数据帧的每一行的最小值

  24. 24

    在第一列相同的所有行中找到Pandas,Python中的最小值,最大值,平均值

  25. 25

    R根据另一行找到每个组的最小值和最大值

  26. 26

    当python的一行中有多个最大值时,在2-dim向量的每一行中查找最大值

  27. 27

    如果另一列具有相同的值,则将列中每一行的数据插入表中

  28. 28

    如何在数据框中找到具有列的最小值的第一行

  29. 29

    遍历具有相同id的所有行,并在不同的表中找到匹配的值

热门标签

归档