簡體   English   中英

Qualtrics 進行隨機子集 - 在 R 中的數據清理期間合並列?

[英]Qualtrics carry forward random subset - merging columns during data cleaning in R?

當我在 Qualtrics 中創建我的調查時,我使用結轉隨機化將來自某個度量的問題子集顯示在第一頁上,然后將尚未看到的問題的隨機子集顯示在下一頁上,依此類推。 最終的結果是這個長篇測驗被分成了 5 頁,而且問題的順序是完全隨機的。 效果很好。 但是當導出為 CSV 時,數據變得相當混亂。下面是一個僅包含兩個導出數據塊的可重現示例。

reprex.data1 <- matrix(c("124", "Completely", "Completely", NA, "973", NA, "Moderately", NA, "592", NA, NA, "Completely"), nrow=3, byrow=TRUE)
reprex.data2 <- matrix(c("124", NA, NA, NA, "973", "Moderately", NA, "Completely", "592", NA, "Completely", NA), nrow=3, byrow=TRUE)
reprex1.cols <- c("id", "scale1_1", "scale2_1", "scale3_1")
reprex2.cols <- c("id", "scale1_2", "scale2_2", "scale3_2")
colnames(reprex.data1) <- reprex1.cols
colnames(reprex.data2) <- reprex2.cols
> reprex.data1
     id    scale1_1     scale2_1     scale3_1    
[1,] "124" "Completely" "Completely" NA          
[2,] "973" NA           "Moderately" NA          
[3,] "592" NA           NA           "Completely"
> reprex.data2
     id    scale1_2     scale2_2     scale3_2    
[1,] "124" NA           NA           NA          
[2,] "973" "Moderately" NA           "Completely"
[3,] "592" NA           "Completely" NA   

我想要將問題塊組合起來,以便將五個塊中的調查響應折疊到一個塊中。 這看起來應該是相對簡單的,但我無法用我習慣使用的不同合並/連接函數來解決這個問題。 有小費嗎? 下面是我希望數據最終看起來的樣子:

reprex.final <- matrix(c("124", "Completely", "Completely", NA, "973", "Moderately", "Moderately", "Completely", "592", NA, "Completely", "Completely"), nrow=3, byrow=TRUE)
reprex.cols <- c("id", "scale1", "scale2", "scale3")
colnames(reprex.final) <- reprex.cols
> reprex.final
     id    scale1       scale2       scale3      
[1,] "124" "Completely" "Completely" NA          
[2,] "973" "Moderately" "Moderately" "Completely"
[3,] "592" NA           "Completely" "Completely"

您可以像這樣使用 tidyr 中的tidyr pivot_longer/pivot_wider實用程序/也使用dplyr / stringr ,所以下面我加載了tidyverse

library(tidyverse)

bind_rows(
  pivot_longer(as.data.frame(reprex.data1), cols=-id),
  pivot_longer(setNames(as.data.frame(reprex.data2), colnames(reprex.data1)), cols=-id)
) %>% 
  filter(!is.na(value)) %>% 
  mutate(name = str_remove(name,"_1")) %>% 
  pivot_wider(id_cols = id, names_from = name, values_from=value)

Output:

  id    scale1     scale2     scale3    
  <chr> <chr>      <chr>      <chr>     
1 124   Completely Completely NA        
2 973   Moderately Moderately Completely
3 592   NA         Completely Completely

暫無
暫無

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

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