私はRで自分のデータフレームを整形するのにいくつかの困難を抱えています。A、B、C、D、Eという5人の個人がいます。観測:X、Y、およびZ。データフレームを長い形式から広い形式に変換して、1つの行を1つの行に、X、Y、Zという2つの列を生成したいと考えています。、 Xの最大値を持つ観測値の集合が最初に現れるようなXの値。したがって、所与の観察のために、X、Y、及びZの値は、一緒にグループ化されたままでなければならないが、観察1又は2の値を表示するかどうかは、最初れた以下Rでデータフレームを再形成する方法は、最大値を条件としていますか?
df = data.frame(
indiv = c("A","A","B","C","C","D","D","E"),
observ = c(1,2,1,1,2,1,2,1),
X = c(rnorm(8, mean = 10, sd = 6)),
Y = c(rnorm(8, mean = 0, sd = 2)),
Z = c(rnorm(8, mean = 4, sd = 4))
)
indiv observ X Y Z
1 A 1 9.959043 1.785043 10.134511
2 A 2 14.122006 -2.257666 5.799366
3 B 1 11.562801 -1.394951 4.988923
4 C 1 12.955644 -4.330272 8.870165
5 C 2 13.582154 -1.727224 -7.5617
6 D 1 4.053437 1.815233 1.789157
7 D 2 12.990071 -1.989307 3.67696
8 E 1 2.820895 -3.754263 3.001725
Xの最大値を有する依存します私のワイドデータフレームがどのように見えているかです。個々のAについては、Xは観測2でより大きく、値の集合(X、Y、Z)が最初に現れる。対照的に、個体CおよびDについては、Xは観察1においてより大きかったので、セットが最初に現れる。私はそれが変形機能のいくつかのバリエーションでなければならないと思うが、私はXの最大値を条件付けする方法がわからない。事前に感謝!
indiv observ X Y Z observ X Y Z
1 A 2 18.797087 0.3247862 4.774446 1 8.547868 0.3203667 6.729975
2 B 1 1.646638 0.7986036 6.938825 NA NA NA NA
3 C 1 17.354905 -2.399272 8.357045 2 6.856093 0.6493722 2.420827
4 D 1 16.058101 -1.2370024 4.045489 2 7.641576 3.0820116 4.232615
5 E 1 13.625998 -0.1953445 -5.627932 NA NA NA NA
転記する前に 'set.seed'を再現できるようにしてください。 – bouncyball