将具有单个| Date | Temperature_1 | Temperature_2 | Temperature_3 | etc .....的数据帧重塑为| Date | Temperature |形成

时间:2019-05-18 09:12:13

标签: r dplyr

我有37个测站的温度数据帧。第一列是日期,第二列到最后一列是1-37个站的温度。我需要对数据进行排列,以使结果包含站点1-37的日期列和温度列。这样,在每个站点之后都将重复日期列。

我尝试过

library(dplyr)
tmax_1 %>% select('Date', 'V1')
tmax_2 %>% select('Date', 'V2')
tmax_3 %>% select('Date', V3)
tmax_4 %>% select('Date', V4)
tmax_5 %>% select('Date', V5)
tmax_6 %>% select('Date', V6)

但这需要很多输入。任何人都可以提出更好的解决方案,以防万一我需要在1000个以上的站中使用!!! [在此处输入图片描述] [1]

1 个答案:

答案 0 :(得分:0)

您似乎想从“宽”数据中生成“长”数据。 tidyr具有gather()可以做到这一点。

您已经在问题中给出了标头格式,可以用更好的方法完成 ,您可以尝试:

tidyr::gather(df, key = "Station", value = "Temperature", -Date)

在此过程中,您将创建一个名为Station的列,该列将包含与旧列名相对应的站点的名称或ID,而一个Temperature列将包含与之对应的温度值到细胞。最后一个参数-Date是排除Date列进行相同的转换。您可以在Rstudio blog上进一步了解gather()spread(),以及在stackoverflow上了解其他问题。

下一次,如果您对数据进行可视化或可重现的示例以及预期结果,可能会有所帮助。