将短宽数据框转换为长叙事自由文本报告

时间:2011-02-03 18:59:46

标签: r reporting dataframe

我从三个数据表导入了大约70个人类主题的数据,并将它们合并到R中的一个数据框中.100个字段中的一些是直接的,例如date.birth,number.surgeries.lifetime和number。 surgeries.12months。其他字段,例如“评论”可能不包含任何值,也可能包含一个句子或甚至几个句子。

有些人类受试者有异常,这意味着某些东西缺失或不正确,对于那些我必须手动调查最新情况的人。当我将数据框作为数据框打开或甚至作为fix()中的表打开时,很难阅读。我必须从左向右滚动,然后我必须将一些列扩展到一个荒谬的数量,只读一条评论。

如果我可以将我需要探索的5名患者分组并将数据报告为自由流动的文本,那会好得多。我以为我可以通过导出到csv来做到这一点,但很难看出哪些字段是什么。例如2001-01-05,12,4,在洛杉矶居住时进行了测试。这很简单,想象如果有100个字段会发生什么,很多是数字,很多是日期,有几个不同的评论字段。

更好的方法是输出如下报告:
date.birth:2001-01-05,number.surgeries.lifetime:12,number.surgeries.12months:4,评论:将于周一与我们交谈 5个记录中的每一个都将遵循该格式 字段名称1:字段1值记录1,字段名称2:字段2值记录1 ...
跳过一条线(或容易看到的东西)
字段名称1:字段1值记录2,字段名称2:字段2值记录2

我该怎么做?

3 个答案:

答案 0 :(得分:3)

这个怎么样?

set.seed(1)
age <- abs(rnorm(10, 40, 20)) 
patient.key <- 101:110
date.birth <- as.Date("2011-02-02") - age * 365
number.surgeries.12months <- rnbinom(10, 1, .5)
number.surgeries.lifetime <- trunc(number.surgeries.12months * (1 + age/10))
comments <- "comments text here"
data <- data.frame(patient.key, 
                   date.birth, 
                   number.surgeries.12months, 
                   number.surgeries.lifetime, 
                   comments)

根据您感兴趣的患者和领域对数据进行子集:

selected.patients <- c(105, 109)
selected.fields <- c("patient.key", "number.surgeries.lifetime", "comments")
subdata <- subset(data[ , selected.fields], patient.key %in% selected.patients)

格式化打印结果。

# paste the column name next to each data field
taggeddata <- apply(subdata, 1, 
                    function(row) paste(colnames(data), row, sep = ":"))
# paste all the data fields into one line of text
textdata <- apply(taggeddata, 2, 
                  function(rec) do.call("paste", as.list(rec)))
# write to a file or to screen
writeLines(textdata)

答案 1 :(得分:0)

虽然我冒险重复自己,但我还会为RMySQL包做另一个案例。您将能够使用您喜欢的SQL客户端编辑数据库(我建议SequelPro)。使用SELECT语句/过滤然后编辑它。例如

SELECT patentid, patentname, inability FROM patients LIMIT 5 

只能显示您需要的字段。使用一个不错的SQL客户端,您可以直接编辑结果并将结果存储到数据库中。之后,您可以将数据库重新加载到R.我知道很多人会认为您的数据集太小而无法承受这样的开销,但我仍然更喜欢R的大多数SQL编辑器的编辑属性。同样适用于如果变得棘手,就加入表格。另外,您可能会对编写视图(访问时更新的“表格”)感兴趣,这些视图将被视为R中的表格。

答案 2 :(得分:-1)

查看库(重塑)。我想如果你从熔化()开始 - 你的数据,你的脚将走上你期望的结果的道路。如果看起来它会有所帮助以及它是如何发生的,请告诉我们。