【发布时间】:2020-06-16 20:40:33
【问题描述】:
我正在处理人口与健康调查 (DHS) 数据。我想将数据从宽变长。在我的步骤下面有代码和错误消息,以便您熟悉。
HNIR62FL_data_1 <- read_sav("~/DHS/HNIR62SV/HNIR62FL_data_1.SAV")obsHNIR62FL_data_1 <- subset(HNIR62FL_data_1, !is.na(V021) & !is.na(V022) & !is.na(D005))myvars <- c("CASEID", "V013", "V021", "V022", "V025", "V106", "V137", "V190", "V714", "D005", "D104", "D106", "D107", "D108","v1014", "v1016", "v1023", "v1038", "v1039", "v1045", "v1113", "V701", "v1007_1", "v1007_2", "v1007_3", "v1007_4", "v1008_1", "v1008_2", "v1008_3", "v1008_4", "v1009_1", "v1009_2", "v1009_3", "v1009_4", "v1010_1", "v1010_2", "v1010_3", "v1010_4", "v1020_1", "v1020_2", "v1020_3", "v1020_4", "v1071_1", "v1071_2", "v1071_3", "v1071_4", "v1088_1", "v1088_2", "v1088_3", "v1088_4", "v1096_1", "v1096_2", "v1096_3", "v1096_4", "v1104_1", "v1104_2", "v1104_3", "v1104_4", "v1111_1", "v1111_2", "v1111_3", "v1111_4", "v1112_1", "v1112_2", "v1112_3", "v1112_4")newobsHNIR62FL_data_1 <- obsHNIR62FL_data_1[myvars]newobsHNIR62FL_1_long <- reshape(newobsHNIR62FL_data_1, varying = c("v1007_1", "v1007_2", "V1007_3", "v1007_4", "v1008_1", "v1008_2", "v1008_3", "v1008_4", "v1009_1", "v1009_2", "v1009_3", "v1009_4", "v1010_1", "v1010_2", "v1010_3", "v1010_4", "v1020_1", "v1020_2", "v1020_3", "v1020_4", "v1071_1", "v1071_2", "v1071_3", "v1071_4", "v1088_1", "v1088_2", "v1088_3", "v1088_4", "v1096_1", "v1096_2", "v1096_3", "v1096_4", "v1104_1", "v1104_2", "v1104_3", "v1104_4", "v1112_1", "v1112_2", "v1112_3", "v1112_4"), direction = "long", idvar = "CASEID", sep = "_")
错误信息:
-
reshapeLong(data, idvar = idvar, timevar = timevar, varying = varying中的错误:'varying' arguments must be the same length
什么是代码,使列具有相同的长度,我可以重塑数据?
谢谢!
【问题讨论】:
-
请阅读r标签页顶部的发布说明。
-
您可以查看
tidyr::gather(),或取代它的功能tidyr::pivot_longer()。stats::reshape两者都有,但语法很复杂。