【发布时间】:2013-08-08 17:19:06
【问题描述】:
我有一个软件可以生成宽度有限的实验数据,这样一串数据点将被包装成一系列行,在最终的 csv 中限制为 4 列宽,而不是每个变量一行(下面的 A 和 B)这是我需要的形式。(下面的示例 csv)
A,1,3,3,2
,5,6,7,8
,9,10,11,12
,13,1,15,6
,17,1,2,20
B,1,2,3,7
,7,6,7,8
,9,10,11,12
,13,15,15,16
,17,18,3,2
在实际数据中,这让我每天要处理大约 53,000 行,所以我想知道是否有一个函数可以让我对给定的数据子集(每个变量)展开或重新维度化成单行。在上面的示例中,变量 A 后面的数字将组合成一行,同时保持顺序(即 1,3,3,2,5...),B 也是如此,依此类推。
根据请求,dput 输出生成上述简化示例..
structure(list(V1 = structure(c(2L, 1L, 1L, 1L, 1L, 3L), .Label = c("",
"A", "B"), class = "factor"), V2 = c(1L, 5L, 9L, 13L, 17L, 1L
), V3 = c(2L, 6L, 10L, 14L, 18L, 2L), V4 = c(3L, 7L, 11L, 15L,
19L, 3L), V5 = c(4L, 8L, 12L, 16L, 20L, 4L)), .Names = c("V1",
"V2", "V3", "V4", "V5"), row.names = c(NA, 6L), class = "data.frame")
【问题讨论】:
-
可以用
read.csv读入这个文件吗?如果可以,你能dput它给你什么吗?如果它完全有效,我猜第 2-5 行的开头会有一个 NA 等。另外,在你的问题中也可以尝试readLines和dput(head(data)。第二种方法肯定会奏效。任何一个都需要编写一个小函数来恢复数据的完整性。听起来像现实世界!而且,实际数据行的开头是否总是大写字母? -
嗯,我对 R 真的很陌生,所以我不肯定我会跟随。我通常使用 read.csv 读取数据。通常,变量标题之间的所有行(准确地说总是大写的“A:, B:,..”)显示为空白。dput 依赖于另一个库,还是 read.csv 中的参数?
-
如果您已将数据读入名为
tst的变量中,请执行dput(head(tst))并将结果复制到上面的问题中。这向我们展示了数据的结构,并提供了一小部分用于测试。