3

我正在努力解决如何最好地构建混乱的分类数据,这些数据来自我需要清理的数据集。

编码方案

我正在分析大学科学课程考试的数据。我们正在研究学生回答的模式,我们开发了一种编码方案来表示学生在回答中所做的事情。编码方案的一个子集如下所示。

请注意,在每个主要代码 (1, 2, 3) 中都有嵌套的非唯一子代码 (a, b, ...)。

原始数据是什么样的

我创建了我的实际数据的匿名原始子集,您可以在此处查看。我的部分问题是那些对数据进行编码的人注意到一些学生表现出多种模式。编码人员的解决方案是创建足够的列 ( reason1, reason2, ...) 来容纳具有多种模式的学生。这变得很重要,因为顺序 ( reason1, reason2) 是任意的——正确应用“依赖关系”的两个学生(如我的 数据集中的学生 41 和学生 42 )都应该在分析中注册,无论3a出现在reason列中还是reason2列中。

如何最好地构建学生数据?

我的部分问题是,在原始数据中,并非所有学生都以相同的顺序显示相同的模式或相同数量的模式。有些学生可能只做一件事,有些学生可能会做几件事。因此,示例学生的抽象表示可能如下所示:

请注意,在上面的示例中student002student003两者都被编码为“1b”,尽管我故意将顺序显示为不同以反映我的数据的实际情况。

我的(实际)问题

  1. 我应该将reason1, reason2,连接...成一列吗?
  2. 我如何(重新)编码reasonR 中的 s 以反映某些学生的多样性?

谢谢

我意识到这个问题既是关于良好的数据概念化的问题,也是关于 R 的特定特性的问题,但我认为在这里问这个问题是合适的。如果你觉得我问这个问题不合适,请在评论中告诉我,stackoverflow 会自动在我的收件箱中塞满悲伤的表情。如果我还不够具体,请告诉我,我会尽力说得更清楚。

4

3 回答 3

5

让它“长”:

library(reshape)
dnow <- read.csv("~/Downloads/catsample20100504.csv")
dnow <- melt(dnow, id.vars=c("Student", "instructor"))
dnow$variable <- NULL ## since ordering does not matter
subset(dnow, Student%in%c(41,42)) ## see the results

接下来要做什么将取决于您想要进行的分析类型。但是长格式对于像您这样的不规则数据很有用。

于 2010-05-05T07:04:30.453 回答
2

如果您想考虑不同的原因,您应该使用 plyr 中的 ddply 并拆分所有列,如果您想忽略它们,请不要在拆分中使用这些列。不过,您需要先清理一些问号和额外的东西。

x <- ddply(data, c("split_column1", "split_column3" etc),
           summarize(result_df, stats you want from result_df))
于 2010-05-05T00:34:45.863 回答
1

您试图回答的(更大的)问题是什么?为什么您对这些信息感兴趣?

您是否只是想找到诸如“如果学生这样做,那么他们也可能这样做”之类的模式?

如果是这种情况,我会考虑一些事情 - 将数据集分成更小的随机样本进行分析,以降低误报的风险。

不过有趣的问题!

于 2010-05-05T14:32:32.677 回答