我正在使用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
所以,基本上我在这里所做的就是获得结果,将它们添加到单个列中。结果仍然通过收集它们的时间点,该个体的年龄,身份和性别来确定。
我试过追加,但我没有取得任何成功。
建议将不胜感激。
答案 0 :(得分:3)
This operation is performed by the gather
function of package tidyr
. In your case if your data.frame is df1, do
gather(df1, time, result, time1, time2, time3, time4)
答案 1 :(得分:2)
我可能会使用melt
中的reshape2
。
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