Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 为clogit模型格式化数据_R_Excel_Choice - Fatal编程技术网

R 为clogit模型格式化数据

R 为clogit模型格式化数据,r,excel,choice,R,Excel,Choice,我做了一项调查,53名受访者分别回答了8个问题 目前,它位于Excel文档中,格式为: 人物#Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8 每个问题都有三种可能的回答:“1”、“2”或“3”。对于给定的人,每个问题都有一个数字表示回答 我需要将每个人的答案转换成一个长列向量,其中三个选项的答案都用二进制编码。因此,对于每个人,应该有24行(每个问题3行),对于每个问题,应该有一行1(表示所做的选择),两行0 我曾在Excel和R中尝试过这样做,但如果不手动输入每个值

我做了一项调查,53名受访者分别回答了8个问题

目前,它位于Excel文档中,格式为:

人物#Q1 | Q2 | Q3 | Q4 | Q5 | Q6 | Q7 | Q8

每个问题都有三种可能的回答:“1”、“2”或“3”。对于给定的人,每个问题都有一个数字表示回答

我需要将每个人的答案转换成一个长列向量,其中三个选项的答案都用二进制编码。因此,对于每个人,应该有24行(每个问题3行),对于每个问题,应该有一行1(表示所做的选择),两行0

我曾在Excel和R中尝试过这样做,但如果不手动输入每个值,我就无法理解如何做到这一点


请告诉我有更好的方法吗?

请参见内联注释中的代码说明

子演示()
将wsSource设置为工作表
将wsDest设置为工作表
作为范围的Dim rSource
暗视范围
Dim vSource作为变量
我和我一样长,我和我一样长
“-->调整以满足您的需要
'设置源和目标引用
设置wsSource=工作表(“SourceData”)
设置wsDest=工作表(“DestData”)
“-->调整以满足您的需要
'假定源数据的标题在第1行,名称在A列,响应在B..I中
使用wsSource
设置rSource=.Range(.Cells(2,9),.Cells(.Rows.Count,1).End(xlUp))
以
“-->调整以满足您的需要
'假设生成的数据以单元格A1开始
Set rDest=wsDest.Cells(1,1)
'获取源数据
vSource=rSource.Value
'大小目标数据数组
ReDim vDest(1到UBound(vSource,1)*24,1到2)
'生成重新格式化的数据
对于每个人,i=1到UBound(vSource,1)”
对于j=1至24'添加人名
vDest((i-1)*24+j,1)=vSource(i,1)
下一个
对于j=1至8'代码8结果
vDest((i-1)*24+(j-1)*3+1,2)=IIf(v源(i,j+1)=1,1,0)
vDest((i-1)*24+(j-1)*3+2,2)=IIf(v源(i,j+1)=2,1,0)
vDest((i-1)*24+(j-1)*3+3,2)=IIf(v源(i,j+1)=3,1,0)
下一个
下一个
'将结果放在工作表上
rDest.Resize(UBound(vDest,1),UBound(vDest,2))=vDest
端接头

您是否考虑过使用VBA执行此操作?@chrisneilsen如果可以的话,我会的,但我可以手动键入所有内容,这样我就可以找出如何使用VBA执行此操作了,非常感谢!当我有机会真正理解如何复制类似的东西时,我将不得不深入研究这个问题。