簡體   English   中英

如何在R中將多行合並為一個觀察

[英]How to combine multiple rows into one observation in R

我對R還是比較陌生,我很想嘗試將數據放入合適的格式。 似乎reshape軟件包可能對此有用,但是我對此沒有更多的了解。

我有一個數據框,其中一欄(V4)包含字符串和數字。 我想按V2和V1中給定的分組拆分V4,並將結果作為三個單獨的列附加到數據幀。

編輯:由於我的原始示例數據框架沒有完全捕獲問題的復雜性,因此這里是一個更准確的示例:

>df <- data.frame(V1=c(rep("SN", 8),rep("JK", 4)), 
             V2=c(1,1,2,2,2,3,3,3,1,1,2,2), 
             V3=c("Picture", "Response", "Sound", "Sound", "Response", "Sound", "Sound", "Response", "Sound", "Response", "Sound", "Sound"), 
             V4=c("Photo", "100", "XYZc02i03", "XYZq02i03", 200, "ZYXc01i30", "ZYXq01i30", 100, "XYZc02i40", 200, "XYZc02i03", "XYZq02i03" ), 
             stringsAsFactors=FALSE)


>V1 V2       V3        V4
 SN  1  Picture     Photo
 SN  1 Response       100
 SN  2    Sound XYZc02i03
 SN  2    Sound XYZq02i03
 SN  2 Response       200
 SN  3    Sound ZYXc01i30
 SN  3    Sound ZYXq01i30
 SN  3 Response       100
 JK  1    Sound XYZc02i40
 JK  1 Response       200
 JK  2    Sound XYZc02i03
 JK  2    Sound XYZq02i03

我想得到這樣的東西:

   V1  V2       V3          V4        V5   V6
   SN   1  Picture       Photo        NA  100
   SN   2    Sound   XYZc02i03 XYZq02i03  200
   SN   3    Sound   ZYXc01i30 ZYXq01i30  100
   JK   1    Sound   XYZc02i40        NA  200
   JK   2    Sound   XYZc02i03 XYZq02i03   NA

編輯:我在V2中的觀察數並不總是相同的,這意味着我想要獲取的數據幀中可能缺少V4,V5或V6的值。

Edit2:V6應該映射到V3的“響應”變量,V4和V5最好以連續順序映射到V3的“聲音”值。

我將非常感謝您提供有關此問題的任何建議。 或者,如果這個問題在其他地方已經解決,而我卻錯過了,那么鏈接也將很棒。

您無需在df的定義中使用cbind 您將使用以下內容:

df <- data.frame(V1=rep("SN", 6), 
                 V2=rep(2:3, each=3), 
                 V3=c("Sound", "Sound", "Response", "Sound", "Sound", "Response"), 
                 V4=c("XYZc02i03", "XYZq02i03", 200, "ZYXc01i30", "ZYXq01i30", 100), 
                 stringsAsFactors=FALSE)

但是給定您所描述的數據框,您可以通過以下方式獲得所需的結果:

max.subset.len <- 3 # or maybe max(sapply(split(df, list(df$V1, df$V2)), FUN=nrow))
fun <- function(v4) {length(v4) <- max.subset.len; v4}
agg <- aggregate(df$V4, by=list(df$V1, df$V2), FUN=fun)
results <- cbind(agg[1:2], agg[[3]])

暫無
暫無

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

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