簡體   English   中英

根據行名R將數據幀重新排序為列

[英]Re-order data frame into columns based on row names R

初學者的問題來了,對不起...我有一個結構如下的數據集:

dat.1<-data.frame(id=c(1,1,1,2,2,2),test=c("test.1","test.2","test.3"),result=c(1,2,1,2,2,1))
dat.1
  id   test result
1  1 test.1      1
2  1 test.2      2
3  1 test.3      1
4  2 test.1      2
5  2 test.2      2
6  2 test.3      1

實際的數據集當前有32個測試,並且ID編號為1000 <,結果始終為二進制-測試數量和ID都會增加。 我想重新排列數據,以便每個測試(即“ test.1”)都有如下所示的列:

dat.3<-data.frame(id=c(1,2),test.1=c(1,2),test.2=c(2,2),test.3=c(1,1))
dat.3
  id test.1 test.2 test.3
1  1      1      2      1
2  2      2      2      1

這樣做的一個小麻煩是,並非每個ID都經過了所有測試,因此任何解決方案都必須應對NA。 只是為了在dat.3中闡明,測試的列內容是dat.1中的結果列。

目前,我已經創建了一個“空”數據框,它可以適應添加的新測試,如下所示:

dat.2<-data.frame(id=c(1,2),test.1=c(NA,NA),test.2=c(NA,NA),test.3=c(NA,NA))
dat.2
  id test.1 test.2 test.3
1  1     NA     NA     NA
2  2     NA     NA     NA

我一直在嘗試ifelse與IF dat.1 $ id == dat.2 $ id&dat.1 $ test ==“ test.1”的邏輯,然后dat.2 col = test.1,輸入dat .1 $導致dat.3 $ test.1-如果有任何意義! 出乎意料的是,沒有運氣,感覺好像我錯過了一個非常明顯的步驟/過於復雜的事情,因此,任何幫助將不勝感激-謝謝

編輯:感謝您的評論-重塑已開始有所幫助; 但是,我想我嘗試對上述示例進行簡化。 我在下面放了一個新的示例數據集:

dat.4<-data.frame(id=c(1,1,1,1,1,1,2,2,2),result=c(1,1,1,2,2,2,3,3,3),
test=c("test.1","test.2","test.3"),result=c(1,2,1,2,2,2,2,2,1))
dat.1
  id result   test result.1
1  1      1 test.1        1
2  1      1 test.2        2
3  1      1 test.3        1
4  1      2 test.1        2
5  1      2 test.2        2
6  1      2 test.3        2
7  2      3 test.1        2
8  2      3 test.2        2
9  2      3 test.3        1

因此,每個ID(實際上是樣本ID)都經過了一項測試,該測試已使它有資格進行進一步的測試-此測試可以有一個或多個結果。 這樣,在上面的示例中,最終的數據結構將如下所示:

dat.3<-data.frame(id=c(1,1,2),result=c(1,2,3),test.1=c(1,2,2),test.2=c(2,2,2),
test.3=c(1,2,1))
dat.3
  id result test.1 test.2 test.3
1  1      1      1      2      1
2  1      2      2      2      2
3  2      3      2      2      1

因此,我真正要尋找的是基於兩個列條件的重塑-這有意義嗎?

多看了一下-答案在R手冊中(不知道我怎么錯過它) 重塑手冊

所以在上面的例子中

dat.2<-reshape(dat.1,idvar=c("id","result"),timevar="test",direction="wide")

dat.2
  id result result.1.test.1 result.1.test.2 result.1.test.3
1  1      1               1               2               1
4  1      2               2               2               2
7  2      3               2               2               1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM