返回每列R的第一个和最后一个非NA值的年份

提比略·格拉苏斯2020

我有一个看起来像这样的数据框:

# A tibble: 9 x 5
# Groups:   group [3]
      group   year    value1  value2  value3
      <int>   <dbl>   <int>   <int>   <int>
1     1       2000    NA      3       4
2     1       2001    8       3       4
3     1       2002    4       3       NA
4     2       2000    NA      NA      1
5     2       2001    9       NA      1
6     2       2002    1       NA      NA
7     3       2000    NA      5       NA
8     3       2001    9       5       NA
9     3       2002    NA      5       NA

我需要一个脚本,该脚本返回每列的第一个和最后一个非na值的年份,而与组无关。理想情况下,输出应如下所示。当心实际的数据集要大得多。

          start   end
value 1   2001    2002
value 2   2000    2002
value 3   2000    2001
阿克伦

我们可以将其重塑为“长”格式,然后按“名称”分组并summarise获得“minmax”年份

library(dplyr)
library(tidyr)
library(tibble)
df1 %>%
   select(-group) %>%
   pivot_longer(cols  = starts_with('value'), values_drop_na = TRUE) %>% 
   group_by(name) %>%
   summarise(start = min(year), end = max(year))  %>%
   column_to_rownames('name')
#        start  end
#value1  2001 2002
#value2  2000 2002
#value3  2000 2001

meltdata.table

library(data.table)
melt(setDT(df1), id.var = c('year', 'group'), na.rm = TRUE)[,
     .(start = min(year), end = max(year)), .(variable)]

或者我们也可以利用 summarise_at

df1 %>%
    summarise_at(vars(starts_with('value')), ~ 
       list(range(year[!is.na(.)]))) %>% 
    unnest(everything()) %>% 
    pivot_longer(everything())

数据

df1 <- structure(list(group = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L), 
    year = c(2000L, 2001L, 2002L, 2000L, 2001L, 2002L, 2000L, 
    2001L, 2002L), value1 = c(NA, 8L, 4L, NA, 9L, 1L, NA, 9L, 
    NA), value2 = c(3L, 3L, 3L, NA, NA, NA, 5L, 5L, 5L), value3 = c(4L, 
    4L, NA, 1L, 1L, NA, NA, NA, NA)), class = "data.frame", 
    row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9"))

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

多个第一个和最后一个非NA值(按组)

来自分类Dev

Excel公式获取第一个和最后一个非零值

来自分类Dev

返回数组中的第一个和最后一个值

来自分类Dev

Excel公式获取行中的第一个和最后一个非空值并返回列标题

来自分类Dev

R:data.table,将组的第一个和最后一个值设置为NA

来自分类Dev

删除第一个和最后一个出现列值的行

来自分类Dev

查找数组中的第一个、最后一个和中间值。返回最大的一个

来自分类Dev

R数据集中的第一个和最后一个观测值

来自分类Dev

如何从变量中获取第一个和最后一个非Inf,非NaN,非NA,非0值?

来自分类Dev

如何基于另一个列值获取一个列的第一个和最后一个值

来自分类Dev

返回第一个非空/空白值?

来自分类Dev

返回第一个非零值的列名

来自分类Dev

返回第一个非空/空白值?

来自分类Dev

在Pandas DataFrame中找到第一个和最后一个非NaN值

来自分类Dev

如何将列值与列python的第一个和最后一个值进行比较

来自分类Dev

按组查找第一个和最后一个NA值的全局索引

来自分类Dev

定位第一个和最后一个非溢出元素

来自分类Dev

在R中从列的第一个值到列的最后一个值循环

来自分类Dev

熊猫将组分为第一个值和最后一个值

来自分类Dev

计算第一个和最后一个出现的数字之间的NA

来自分类Dev

Elasticsearch聚合中第一个和最后一个文档的返回字段

来自分类Dev

Elasticsearch聚合中第一个和最后一个文档的返回字段

来自分类Dev

javascript返回错误的第一个日期和最后一个日期

来自分类Dev

从R中的二进制矩阵中提取第一个和最后一个非零行和列

来自分类Dev

提取第一个非随机列的值

来自分类Dev

提取第一个非随机列的值

来自分类Dev

熊猫:从df列中的值中删除第一个和最后一个元素

来自分类Dev

通过查询选择组中列的第一个和最后一个值

来自分类Dev

如何使用SQL获取列中每个分区的第一个和最后一个值

Related 相关文章

  1. 1

    多个第一个和最后一个非NA值(按组)

  2. 2

    Excel公式获取第一个和最后一个非零值

  3. 3

    返回数组中的第一个和最后一个值

  4. 4

    Excel公式获取行中的第一个和最后一个非空值并返回列标题

  5. 5

    R:data.table,将组的第一个和最后一个值设置为NA

  6. 6

    删除第一个和最后一个出现列值的行

  7. 7

    查找数组中的第一个、最后一个和中间值。返回最大的一个

  8. 8

    R数据集中的第一个和最后一个观测值

  9. 9

    如何从变量中获取第一个和最后一个非Inf,非NaN,非NA,非0值?

  10. 10

    如何基于另一个列值获取一个列的第一个和最后一个值

  11. 11

    返回第一个非空/空白值?

  12. 12

    返回第一个非零值的列名

  13. 13

    返回第一个非空/空白值?

  14. 14

    在Pandas DataFrame中找到第一个和最后一个非NaN值

  15. 15

    如何将列值与列python的第一个和最后一个值进行比较

  16. 16

    按组查找第一个和最后一个NA值的全局索引

  17. 17

    定位第一个和最后一个非溢出元素

  18. 18

    在R中从列的第一个值到列的最后一个值循环

  19. 19

    熊猫将组分为第一个值和最后一个值

  20. 20

    计算第一个和最后一个出现的数字之间的NA

  21. 21

    Elasticsearch聚合中第一个和最后一个文档的返回字段

  22. 22

    Elasticsearch聚合中第一个和最后一个文档的返回字段

  23. 23

    javascript返回错误的第一个日期和最后一个日期

  24. 24

    从R中的二进制矩阵中提取第一个和最后一个非零行和列

  25. 25

    提取第一个非随机列的值

  26. 26

    提取第一个非随机列的值

  27. 27

    熊猫:从df列中的值中删除第一个和最后一个元素

  28. 28

    通过查询选择组中列的第一个和最后一个值

  29. 29

    如何使用SQL获取列中每个分区的第一个和最后一个值

热门标签

归档