我正在努力解决如何最好地构建混乱的分类数据,并且来自dataset我需要清理。
我正在分析大学科学课程考试的数据。我们正在研究模式 学生的反应,我们开发了一种编码方案来代表各种事物 学生正在回答他们的问题。编码方案的子集如下所示。
请注意,每个主要代码(1,2,3)都是嵌套的非唯一子代码(a,b,...)。
我已创建了实际数据的匿名原始子集,您可以查看here。
我的部分问题是编码数据的人注意到有些学生表现出来了
多种模式。编码员的解决方案是创建足够的列(reason1
,reason2
,
...)让学生拥有多种模式。这很重要,因为订单
(reason1
,reason2
)是任意的 - 两个学生(就像我的学生41和学生42)
正确应用“依赖”的dataset)应该在分析中注册,无论如何
3a
列或reason
列中是否显示reason2
。
我的部分问题是在raw data中,并非所有学生都显示相同的内容 模式或它们的数量相同,顺序相同。有些学生可能只做一个 事情,其他人可能会做几件事。因此,示例学生的抽象表示可能 看起来像这样:
请注意,在上面的示例中,student002
和student003
都被编码为“1b”,尽管我故意将顺序显示为不同以反映my data的实际情况。< / p>
reason1
,reason2
,...
连接到一列吗?reason
以反映某些学生的多样性?我意识到这个问题与良好的数据概念化有关,因为它与R的特定功能有关,但我认为在这里提出这个问题是合适的。如果您觉得我提出这个问题是不合适的,请在评论中告诉我,stackoverflow会自动使用sadface表情符号填充我的收件箱。如果我不够具体,请告诉我,我会尽力让自己更清楚。
答案 0 :(得分: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
下一步做什么将取决于您想要进行的分析类型。但是长格式对于像你这样的不规则数据很有用。
答案 1 :(得分:2)
如果要考虑不同的原因,你应该使用plyr中的ddply并拆分所有列,如果你想忽略它们,请不要在拆分中使用这些列。你需要首先清理一些问号和额外的东西。
x <- ddply(data, c("split_column1", "split_column3" etc),
summarize(result_df, stats you want from result_df))
答案 2 :(得分:1)
你试图回答的(大图)问题是什么?为什么这些信息对你有意思?
您是否只是想找到一些模式,例如“如果学生这样做,那么他们也可能会这样做”?
如果是这种情况我会考虑的事情 - 将数据集拆分为较小的随机样本以进行分析,以降低误报的风险。
虽然有趣的问题!