问题描述
以下数据集是我现在所拥有的:
我想得到 R 代码以获得以下形状:
问候,
艾哈迈德
解决方法
您应该尝试查看 pivot_wider()
包中的 tidyverse
函数和文档。用例应与您在此处描述的完全匹配。
假设我们有以下带有两行标题的数据:
c1 <- c('','','Alice','Bob','Bob')
c2 <- c('','Cold','Flu','Flu')
c3 <- c('2014','Fall','X','X')
c4 <- c('2014','Winter','')
c5 <- c('2015','X')
c6 <- c('2015','')
df <- data.frame(c1,c2,c3,c4,c5,c6)
我首先将两列合并为一列,然后融合/聚集,最后分离
library(dplyr)
library(tidyr)
在此处插入您的 df
col.names
df <- df[-c(1,2),]
df <- setNames(df,col.names)
df %>%
gather(Season,Value,-Person,-Type) %>%
mutate(Season = as.character(Season)) %>%
separate(Season,c("Year","Season"))
,
您可以尝试使用 reshape2 包
Df_long <- melt(df,id.vars=c("Date","Time"),measure.vars=c("TEMPERAT","RH","WS","WD","SOL_RAD","UV A","UV B"),variable.name="Values",value.name="Station") ```