繁体   English   中英

如何在Excel中将数据从宽格式重塑/重塑

[英]How to reshape/recast data in Excel from wide- to long-format

我想将Excel中的数据重塑为当前“宽”格式为“长”格式。 您可以看到每个变量( Column Name )对应于任期,种族和成本负担。 我想更轻松地将这些数据放入数据透视表中,但是我不确定如何执行此操作。 有什么想法吗?

仅供参考,数据为HUD CHAS(住房和城市发展部,全面住房可负担性策略),其中有20多个表格需要重塑。

数据码本的图像

数据本身的图像

有一个简单的R脚本将对此有所帮助。 该函数接受csv文件的路径以及标头变量的数量。 在我提供的示例图像/数据中,有7个标头变量。 也就是说,实际数据(T9_est1)从第8列开始。

# Use the command below if you do not have the tidyverse package installed. 
# install.packages("tidyverse")
library(tidyverse)

read_data_long <- function(path_to_csv, header_vars) {
  data_table <- read_csv(path_to_csv)
  fields_to_melt <- names(data_table[,as.numeric(header_vars+1):ncol(data_table)])
  melted <- gather(data_table, fields_to_melt, key = 'variable', value = 'values')
  return(melted)
}

# Change the file path to where your data is and where you want it written to. 
# Also change "7" to the number of header variables your data has.
melted_data <- read_data_long("path_to_input_file.csv", 7)
write_csv(melted_data, "new_path_to_melted_file.csv")

(更新了7/25/18,提供了一种更为优雅的解决方案;再次更新了9/28/18,并进行了少许改动。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM