R函数根据重复时间组合行

标签 r dataframe dplyr rbind

我有一个大型数据集,它有重复的时间(行),我想合并两行列中的数据。数据如下所示:

date              P1   PT1  P2   PT2   P3   PT3

5/5/2011@11:40    NA   NA   NA   NA   9.4   10.1

5/5/2011@11:40    5.6  10.2  8.5 10.1  NA   NA

我想了解一下

date                P1     PT1     P2    PT2    P3    PT3

5/5/2011@11:40    5.6  10.2  8.5 10.1  9.4   10.1

我的数据集是 10 年的 10 分钟数据,重复有些随机。添加了 @ 符号以正确显示。

我试过 rbindrbind.row.names 都无济于事。

谢谢!

最佳答案

您可以使用 dplyr 中的 summarize() 函数。以下将起作用,但它不检查重复项,它只取每个日期的最大值。

library(dplyr)
df <- tribble(~date, ~P1, ~PT1, ~P2, ~PT2, ~P3, ~PT3, 
        "5/5/2011@11:40", NA, NA, NA, NA, 9.4, 10.1, 
        "5/5/2011@11:40", 5.6, 10.2, 8.5, 10.1, NA, NA
)

df %>%
    group_by(date) %>%
    summarize(across(starts_with("P"), max, na.rm = TRUE))

换句话说,如果您确定您的数据包含或者一个数字或者 NA,那么它就可以工作。

关于R函数根据重复时间组合行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68924687/

相关文章:

r - makeCluster 中出现错误(检测Cores(),类型 = "PSOCK"): unknown cluster type

r - 仅获取矩阵列 "middle"中 NA 的位置

r - 使用 dplyr 进行交互频率计数,必须包括零计数

Python数据帧检查列数据帧中的值是否在另一个数据帧中报告的值的范围内

pandas - Pandas DataFrame 的空副本

r - 如何在 R 中使用并发值求和

javascript - 重置数组并重新渲染组件

r - 如何在R Shiny中设置页面宽度?

r - 即使有选项,R 中的 huxtable 默认为科学记数法(scipen=999)

scala - 在 Scala Spark 中加入不同的 Dataframe 时动态选择多个列