[英]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.