【问题标题】:Adding values from wide data frame to long data frame将值从宽数据帧添加到长数据帧
【发布时间】:2019-06-25 20:01:01
【问题描述】:

我有多个宽格式或长格式的数据帧,我正在尝试设置一段通用代码(循环或其他),这将允许我从宽 df 中获取值并将它们插入长df。

两个数据框的截图见附件。

我想将宽 DF 中每次扫描的扫描日期转换为长 DF 中的新变量。感觉很简单,但我卡住了 - 感谢您的帮助!

【问题讨论】:

    标签: r dplyr


    【解决方案1】:
    library(tidyr)
    library(stringr)
    datalong <- gather(datawide, -PID)
    datalong$ScanType <- ifelse(str_detect(as.character(datalong$key), "date"), "scan_date","scan_name")
    datalong <- spread(datalong, ScanType, value)
    #Merge with other long dataframe
    NewLong <- merge(oldLong, datalong, by = c("PID","scan_name")
    

    我相信这会奏效,但我不能确定,因为没有可重现的示例。您最终会得到一个最有可能名为“key”的额外列,它来自gather(datawide, -PID)。如果您不想要这些额外的元数据,您可以在执行 spread(data, ScaneType, value) 行之前将该列从 datalong 中子集化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多