我有一张这样的桌子:

country    continent      date         n_case         Ex         TD         TC
--------------------------------------------------------------------------------
 Italy      Europe      2022-02-24        6           NA          2          90
 Italy      Europe      2022-01-17        12          87          2          86
 USA        America     2022-02-23        NA          NA          3          65
 USA        America     2022-01-08        6           NA          5          67
 USA        America     2022-01-04        6           7           7          87
etc etc...

我希望的是一个新的数据框,每个国家有一行,每个国家将以列的形式存储国家名称(列=国家)和大陆(列=大陆),以及列中每个值报告的最新日期(日期、n_情况、Ex、TD、TC):

理想的数据框架:

country    continent      date         n_case         Ex         TD         TC
--------------------------------------------------------------------------------
 Italy      Europe      2022-02-24        6           87          2          90
 USA        America     2022-02-23        6           7           3          65
 etc etc..

要忽略的值为NA或""(空白)

非常感谢.

推荐答案

使用dplyr,可以按日期递减对数据进行排序,然后在每列中选择第一个非NA值.

library(dplyr)

df %>%
  group_by(country, continent) %>%
  arrange(desc(date), .by_group = TRUE) %>% 
  summarise(across(everything(), ~ .x[!is.na(.x)][1])) %>%
  ungroup()

# # A tibble: 2 × 7
#   country continent date       n_case    Ex    TD    TC
#   <chr>   <chr>     <date>      <int> <int> <int> <int>
# 1 Italy   Europe    2022-02-24      6    87     2    90
# 2 USA     America   2022-02-23      6     7     3    65

Data
df <- structure(list(country = c("Italy", "Italy", "USA", "USA", "USA"),
continent = c("Europe", "Europe", "America", "America", "America"),
date = structure(c(19047, 19009, 19046, 19000, 18996), class = "Date"), 
n_case = c(6L, 12L, NA, 6L, 6L), Ex = c(NA, 87L, NA, NA, 7L),
TD = c(2L, 2L, 3L, 5L, 7L), TC = c(90L, 86L, 65L, 67L, 87L)),
row.names = c(NA, -5L), class = "data.frame")

R相关问答推荐

在 R 中系统地重命名字符串

如何根据先前的正方形递归创建正方形?

tidyverse:数据转换,gather()

expss表输出的rbinding表错误

R Plotly Bar Chart - 添加水平线标记

关键字在R中的字符串的上下文中重复多次

停止更新*输入无效react

在R中的数据框中重命名和重新编码新变量的范围

将随机观察值的总和计算为 R 中每周的总和

在 R 中推断顺序数据中的选择顺序

可以使 data.table 输出看起来更像 tibble 输出吗? (10 行,仅打印适合屏幕的列)

如何将变量值映射到图案填充 - ggplot / ggpattern (

判断线性混合效应模型的正态假设

将字符向量中元素的唯一组合连接到 R 中的新字符串向量中

每天汇总计算 R 中的不同 ID

分配括号内的变量

如何在带有 apply 或 map 的列表上使用 case_when()

计算每第 n 个元素的平均值

在 dplyr 中使用 mutate 和 case_when 将新值插入数据框中

在 R 中拆分逗号和分号分隔的字符串