首页 > 解决方案 > R函数根据单独数据框中的条件填充数据框

问题描述

我有一个空白数据框“DF1”,如下所示:

地点 2021-01-01 00:00:00 2021-01-01 03:00:00 2021-01-01 06:00:00 2021-01-01 09:00:00
BMA 不适用 不适用 不适用 不适用
BMC 不适用 不适用 不适用 不适用
马华 不适用 不适用 不适用 不适用
中冶 不适用 不适用 不适用 不适用

我有一个部分数据框“DF2”,如下所示:

图像日期 站点名称
2021-01-01 02:53:00 BMA
2021-01-01 08:44:00 中冶
2021-01-01 05:22:00 BMC

如何查询 DF2,以便当“ImageDate”中的数据点落入 DF1 的列标题(时隙)之一时,将数字“1”放置在 DF1 的相应/匹配“站点”中?如果在某个站点的特定列(时隙)中没有找到数据,则该单元格将获得“0”,因此它将产生以下数据框:

地点 2021-01-01 00:00:00 2021-01-01 03:00:00 2021-01-01 06:00:00 2021-01-01 09:00:00
BMA 1 0 0 0
BMC 0 1 0 0
马华 0 0 0 0
中冶 0 0 1 0

谢谢!

标签: rdataframesubset

解决方案


与其创建一个空白df1并填充它,您可以df2以一种提供我们想要的结构的方式进行转换。

你可以试试 -

library(dplyr)
library(tidyr)
library(lubridate)

df2 %>%
  mutate(ImageDate = floor_date(ymd_hms(ImageDate), '3 hours')) %>%
  pivot_wider(names_from = ImageDate, values_from = ImageDate, 
              values_fn = length,values_fill = 0)

推荐阅读