在 R 中操作变量

Manipulating variables in R

我正在使用 R 中具有以下格式的数据集:

id  age gender  time1   time2   time3   time4
12  22  0   2   3   2   3
13  35  0   3   4   3   4
14  45  0   4   1   4   1
15  23  0   1   3   5   3
16  67  0   2   2   1   4
17  55  0   4   4   3   2
18  68  1   5   5   4   1
19  90  1   1   6   5   2
20  20  1   3   7   1   2
21  34  1   5   5   3   2

我想按以下方式在 R 中修改此数据集:

time    result  id  age gender
time1   2   12  22  0
time1   3   13  35  0
time1   4   14  45  0
time1   1   15  23  0
time1   2   16  67  0
time1   4   17  55  0 
time1   5   18  68  1
time1   1   19  90  1
time1   3   20  20  1
time1   5   21  34  1
time2   3   12  22  0
time2   4   13  35  0
time2   1   14  45  0
time2   3   15  23  0
time2   2   16  67  0
time2   4   17  55  0 
time2   5   18  68  1
time2   6   19  90  1
time2   7   20  20  1
time2   5   21  34  1
time3   2   12  22  0
time3   3   13  35  0
time3   4   14  45  0
time3   5   15  23  0
time3   1   16  67  0
time3   3   17  55  0
time3   4   18  68  1
time3   5   19  90  1
time3   1   20  20  1
time3   3   21  34  1

所以,基本上我在这里所做的是获取结果,将它们附加到一个单独的列中。结果仍然由收集结果的时间点、该人的年龄、身份和性别来标识。

我试过追加,但没有成功。

建议将不胜感激。

此操作由包 tidyrgather 函数执行。在您的情况下,如果您的 data.frame 是 df1,则执行

gather(df1, time, result, time1, time2, time3, time4)

我可能会使用 reshape2 中的 melt

melt(df,id.vars=1:3,value.name="result",variable.name="time")

#    id age gender  time result
# 1  12  22      0 time1      2
# 2  13  35      0 time1      3
# 3  14  45      0 time1      4
# 4  15  23      0 time1      1
# 5  16  67      0 time1      2
# 6  17  55      0 time1      4
# 7  18  68      1 time1      5
# 8  19  90      1 time1      1
# 9  20  20      1 time1      3