簡體   English   中英

是否有用於將多列旋轉到同一行的 R 函數?

[英]Is there an R function for pivoting multiple columns to the same row?

我最近進行了一項實驗,要求每個參與者為呈現的每個刺激填寫一個量表,現在我的數據看起來像這樣:

參與者 Stim1_1 Stim1_2 Stim1_3 Stim2_1 Stim2_2 Stim2_3 Stim3_1 Stim3_2 Stim3_3

一種

具有多個刺激和多個尺度項目。 我想把它作為一個長數據集,每個刺激都有自己的行,每個項目組成自己的列,如下所示:

參與者刺激項目 1 項目 2 項目 3

1
A2
一個 3
乙 1
乙 2
乙 3

如果這是有道理的。 我正在考慮使用pivot_longer,但這似乎為每個刺激和項目創建了一個新行,以便刺激 1、項目 1 將有自己的行,以及刺激 1、項目 2 等。有什么方法可以做這個?

您在使用 pivot_longer 時走在正確的軌道上。 使用一個pivot_wider 可能有更簡單的方法來做到這一點,但我自己將其分解為3 個步驟。

首先,我以長格式獲取所有內容。 然后我按照我想要的方式分解列名,並將數據整理成整潔的格式。 然后我旋轉得更寬,使列恢復為人類可讀的格式。

library(dplyr)
library(tidyr)

df <- dplyr::tribble(
  ~Participant,~Stim1_1,~Stim1_2,~Stim1_3,~Stim2_1,~Stim2_2,~Stim2_3,~Stim3_1,~Stim3_2,~Stim3_3,
  "A",NA,NA,NA,NA,NA,NA,NA,NA,NA,
  "B",NA,NA,NA,NA,NA,NA,NA,NA,NA,
)

df %>% tidyr::pivot_longer(
  Stim1_1:Stim3_3,
  names_prefix = "Stim"
) %>%
  tidyr::separate(name,c("Stim","Item"),sep = "_") %>%
  pivot_wider(
    names_from = Item,
    values_from = value,
    names_prefix = "Item"
  )

# # A tibble: 6 x 5
# Participant Stim  Item1 Item2 Item3
# <chr>       <chr> <lgl> <lgl> <lgl>
# 1 A           1     NA    NA    NA   
# 2 A           2     NA    NA    NA   
# 3 A           3     NA    NA    NA   
# 4 B           1     NA    NA    NA   
# 5 B           2     NA    NA    NA   
# 6 B           3     NA    NA    NA  

暫無
暫無

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

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