【发布时间】:2011-02-16 02:03:10
【问题描述】:
假设我们在一项调查中有 2 个问题,一个是关于个人推荐一家公司的可能性(为简单起见,假设有 2 家公司)。
所以,对于这个问题,我有一个包含 2 列的 data.frame:
df.recommend <- data.frame(rep(1:5,20),rep(1:5,20))
colnames(df.recommend) <- c("Company1","Company2")
并且,假设我们有另一个问题,要求受访者在他们认为“适合”公司的属性旁边勾选一个框。
所以,对于这个问题,我有另一个包含 4 列的 data.frame:
df.attribute <- data.frame(rep(0:1,50),rep(1:0,50),rep(0:1,50),rep(1:0,50))
colnames(df.attribute) <- c(
"Attribute1.Company1",
"Attribute2.Company1",
"Attribute1.Company2",
"Attribute2.Company2")
现在,我想做的是查看属性 1 和 2 如何与所有公司(独立于公司)推荐问题的可能性范围相关。例如,只是为了了解那些极有可能推荐和属性 1 的人之间存在哪些惯性。
所以,我首先将两个问题绑定在一起:
df <- cbind(df.recommend, df.attribute)
我的问题是试图弄清楚如何堆叠这些数据,使列看起来像:
df.stacked <- data.frame(c(df$Company1,df$Company2),
c(df$Attribute1.Company1,df$Attribute1.Company2),
c(df$Attribute2.Company1,df$Attribute2.Company2))
colnames(df.stacked) <- c("Likelihood","Attribute1","Attribute2")
这个例子在很大程度上被简化了。在我的实际问题中,我有 34 个公司和 24 个属性。
你能想出一种方法来有效地堆叠它们,而不必输入所有的 c() 语句吗?
注意:可能性的列模式是 Co1,Co2,Co3,Co4...,属性的模式是 At1.Co1,At2.Co1,At3.Co1 ... At1.Co34,At2.Co34。 ..
【问题讨论】:
-
df.stacked的结构你觉得应该是什么?df.stacked的str返回“data.frame: 2 obs of 300 variables” -
已更新。谢谢你赶上那个追逐。
-
只是为了确保我在同一页上,最终的 data.frame 应该具有 34 * n 行和 25 列的尺寸(Likelihood 变量为 1 列,每个属性为 24 ?
-
Chase,是的,这正是我的目标。