我在下面输入了原始向量的条目。实际的原始向量包含50,000多个元素。下面只是几个元素的外观快照。如您所见,很难解释这从哪里开始以及到哪里结束。我所知道的是,这些数据来自具有19列的数据框。
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
2.1 2.2 2.3 2.5 2.6 2.7 2.8 2.9 2.10 2.12 2.13 2.14 2.15 2.16 3.1 3.2 3.3 3.5 3.6
"" "" "" "" "" "" "" "" "" "" "9bbb59" "9bbb59" "" "" "" "" "" "" ""
3.7 3.8 3.9 3.10 3.12 3.13 3.14 3.15 3.16 4.1 4.2 4.3 4.5 4.6 4.7 4.8 4.9 4.10 4.12
"" "" "" "" "" "9bbb59" "9bbb59" "" "" "" "" "" "" "" "" "" "" "" ""
4.13 4.14 4.15 4.16 5.1 5.2 5.3 5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.14 5.15 5.16 5.18
"9bbb59" "9bbb59" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
所以我的目标是将原始向量格式化为包含19个列的数据框。
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 col19
NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA NA NA NA NA NA NA NA NA NA NA "9bbb59" "9bbb59" NA NA NA NA NA
NA NA NA NA NA NA NA NA NA NA NA NA "9bbb59" "9bbb59" NA NA NA NA NA
NA NA NA NA NA NA NA NA NA NA NA NA "9bbb59" "9bbb59" NA NA NA NA NA
NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
请注意编号的行1.1、2.3、4.3等,点左侧的第一个数字表示行号,点右侧的第二个数字表示列号。 2.13指示第二行或第二观察值以及第13列。
在此方面提供的任何帮助都将受到赞赏。
==========
上述原始向量的示例。
dat <- structure(c("", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"9bbb59", "9bbb59", "", "", "", "", "", "", "", "", "", "", "",
"", "9bbb59", "9bbb59", "", "", "", "", "", "", "", "", "", "",
"", "", "9bbb59", "9bbb59", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", ""), .Names = c("1.1", "1.2", "1.3",
"1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12",
"1.13", "1.14", "1.15", "1.16", "1.17", "1.18", "1.19", "2.1",
"2.2", "2.3", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.12",
"2.13", "2.14", "2.15", "2.16", "3.1", "3.2", "3.3", "3.5", "3.6",
"3.7", "3.8", "3.9", "3.10", "3.12", "3.13", "3.14", "3.15",
"3.16", "4.1", "4.2", "4.3", "4.5", "4.6", "4.7", "4.8", "4.9",
"4.10", "4.12", "4.13", "4.14", "4.15", "4.16", "5.1", "5.2",
"5.3", "5.5", "5.6", "5.7", "5.8", "5.9", "5.10", "5.11", "5.12",
"5.14", "5.15", "5.16", "5.18"))
答案 0 :(得分:0)
我会这样做:
vec <- c(1.1, "a", 1.2, "", 2.1, "", 2.2, "b") # in your case, your vector
mat <- matrix(vec,ncol = 2) # in your case, ncol = 19
mat <-mat[seq(2, nrow(mat), by = 2), ] # we pick only the even columns
mat[mat==""] <- NA # transform "" into NA
mat <- as.data.frame(mat) # now we have a data.frame
最好!
答案 1 :(得分:0)
最初的想法是创建某种类型的循环。根据您需要的动态程度,可以对这样的代码进行粗略的编码。
test = data.frame(Var1 = dat[grep("[1-9].1$", names(dat))],
Var2 = dat[grep("[1-9].2$", names(dat))],
Var13 = c(dat[grep("[1-9].13$", names(dat))], c("","","",""))[1:5])
# You need the concat for columns where there are less than 5 rows.