我有以下类型的数据,尽管在实际数据集中,集合和个人的水平相当高:
set <- c(rep(1,6), rep(2,6))
Indvidual <- c(rep (c("IndvA", "IndvA", "IndvB", "IndvB", "IndvC", "IndvC"), 2))
leftposition <- c(10, 10,0 ,0, 0, 0, 40, 40, 30, 30, 20, 20 )
rightposition <- c(20, 20,20,20, 30, 30, 50, 50, 40, 40, 60, 60 )
leftmark <- c( 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21 , 23 )
rightmark <- c( 2, 4, 6, 8, 10, 12,14, 16, 18, 20, 22, 24 )
myd <- data.frame (set, Indvidual,leftposition,rightposition, leftmark, rightmark)
myd
set Indvidual leftposition rightposition leftmark rightmark
1 1 IndvA 10 20 1 2
2 1 IndvA 10 20 3 4
3 1 IndvB 0 20 5 6
4 1 IndvB 0 20 7 8
5 1 IndvC 0 30 9 10
6 1 IndvC 0 30 11 12
7 2 IndvA 40 50 13 14
8 2 IndvA 40 50 15 16
9 2 IndvB 30 40 17 18
10 2 IndvB 30 40 19 20
11 2 IndvC 20 60 21 22
12 2 IndvC 20 60 23 24
在第一列是个人旁边的新数据集中,其余列都是唯一的(左位置,右位置)
sort (unique (c(leftposition, rightposition)))
[1] 0 10 20 30 40 50 60
现在对于 set = 1,我想为个人添加值(注意每个个人已重复两次,这是预期的)。每个个体有两个值 - 一个添加到左侧(leftposition),另一个添加到右侧(rightposition)。实际要向左或向右打印的数据分别在leftmark 和rightmark 中。因此,对于第一组,有组织的数据如下所示:
然后 set2 (或 n 组数据)将被添加到同一个表中。结尾处的任何空白都将用 NA 或指定的任何值(例如“-”)填充。
感谢您的帮助: