通过匹配和重复来自不同列的值来创建新变量

时间:2014-09-08 08:22:30

标签: r dataframe

我有一个大型数据框,其中包含学生之间友谊水平的问题(“net1”:“net6”)。

数据框中有121个不同大小的类。

“studentid”是回答同学的学生的身份,“alterid”是被提及的学生的身份。

数据样本:

     studentid  alterid net1 net2 net3 net4 net5 net6 gender
1     30401001 30401001    1    3    3    3    1    1      1
2     30401002 30401001    1    3    3    3    1    1      1
3     30401003 30401001    2    3    3    1    3    3      1
4     30401004 30401001    3    3    3    3    3    3      2
5     30401005 30401001    1    3    3    3    3    2      2
6     30401006 30401001    2    3    3    3    3    2      1
7     30401007 30401001    1    3    3    3    2    1      2
8     30401008 30401001    1    3    3    3    3    1      1
9     30401009 30401001    3    3    3    3    3    3      2
10    30401010 30401001    3    3    3    3    2    2      2
11    30401011 30401001    3    3    3    3    3    3      2
12    30401012 30401001    3    3    3    3    3    3      1
13    30401015 30401001    3    3    3    3    3    3      2
14    30401016 30401001    3    2    3    3    3    3      2
15    30401017 30401001    1    1    3    3    3    1      2
16    30401019 30401001    3    3    3    3    3    3      2
17    30401021 30401001   NA   NA   NA   NA   NA   NA      1
18    30401022 30401001    3    1    3    3    3    1      2
19    30401024 30401001    3    3    3    3    3    3      1
20    30401025 30401001    1    2    3    1    3    1      1
21    30401026 30401001    3    3    3    3    3    3      2
22    30401027 30401001    1    3    3    3    3    3      1
23    30401028 30401001    1    1    1    1    1    1      1
24    30401029 30401001    3    3    3    3    3    3      2
25    30401030 30401001    3    3    3    3    3    3      2
26    30401031 30401001    2    3    3    2    3    3      2
27    30401033 30401001    3    3    3    3    3    1      2
28    30401034 30401001    1    3    1    3    3    1      1
29    30401035 30401001    1    3    3    3    3    2      2
30    30401036 30401001    1    3    1    3    3    3      2
2385  30401001 30401002    1    2    3    2    1    1      1
2386  30401002 30401002   NA   NA   NA   NA   NA   NA      1
2387  30401003 30401002    3    3    3    3    1    3      1
2388  30401004 30401002    3    3    3    3    3    3      2
2389  30401005 30401002    1    2    3    3    3    2      2
2390  30401006 30401002    2    3    3    3    3    2      1
2391  30401007 30401002    1    3    3    3    2    1      2
2392  30401008 30401002    3    3    3    3    3    3      1
2393  30401009 30401002    3    3    3    3    3    3      2
2394  30401010 30401002    3    2    3    3    3    2      2
2395  30401011 30401002    3    3    3    3    3    3      2
2396  30401012 30401002    3    3    3    3    3    3      1
2397  30401015 30401002    3    3    3    3    3    3      2
2398  30401016 30401002    3    3    3    3    3    3      2

我有一个“性别”变量,这是回答问题的学生的性别。

我需要创建一个“altergender”变量,该变量将是被引用的学生的性别。

因此,如果“alterid”以01结尾,则所有“altergender”应该是同一类中的“studentid [1]”的性别(数据示例中的第1行),如果altergender以02结尾,则所有“altergender”应为同一类中“studentid [2]”的性别(样本中的行号2386)。

我尝试创建一个不同的对象(没有网络问题),并在其中将“studentid”更改为“alterid”,然后合并回数据框。它给了我正确的结果,但创造了许多我不想要的新行。

我也尝试了不同的ifelse变体,但无法成功获得所需的结果。

我承认我的函数编写技能非常低,所以任何帮助都会帮助我解决问题,并且是一个尝试理解它背后的逻辑的好机会。

0 个答案:

没有答案