簡體   English   中英

匹配和重新排序 R 中多列中的行(tidyverse)

[英]Match and re-order rows in multiple columns in R (tidyverse)

我有一個這樣的數據集(在實際數據集中,我有更多列,如 subj01):

# A tibble: 10 x 4
    item subj01 subj02 subj03
   <int>  <dbl>  <dbl>  <dbl>
 1     1      1      1      1
 2     2      2      2      6
 3     3      5      5      9
 4     4      9      6     NA
 5     5     10      8     NA
 6     6     NA      9     NA
 7     7     NA     10     NA
 8     8     NA     NA     NA
 9     9     NA     NA     NA
10    10     NA     NA     NA

我使用下面的代碼創建了數據集。

data = tibble(item = 1:10, subj01 = c(1,2,5,9,10,NA,NA,NA,NA,NA), subj02 = c(1,2,5,6,8,9,10,NA,NA,NA), subj03 = c(1,6,9,NA,NA,NA,NA,NA,NA,NA))

我想重新排序所有以“subj”開頭的列,以便值的 position 與項目列中的相匹配。

也就是說,對於這個示例數據集,我想以這樣的結尾:

# A tibble: 10 x 4
    item subj01 subj02 subj03
   <int>  <dbl>  <dbl>  <dbl>
 1     1      1      1      1
 2     2      2      2     NA
 3     3     NA     NA     NA
 4     4     NA     NA     NA
 5     5      5      5     NA
 6     6     NA      6      6
 7     7     NA     NA     NA
 8     8     NA      8     NA
 9     9      9      9      9
10    10     10     10     NA

我想我可以通過運行以下命令來匹配和重新排序一列:

data$subj01[match(data$item,data$subj01)]
 [1]  1  2 NA NA  5 NA NA NA  9 10

但是我正在努力跨多個列應用它(理想情況下我想將命令嵌入到 dplyr 管道中)。

我嘗試了下面的命令,但這給了我一個錯誤“變異錯誤(x。= x。[匹配(項目,x。)]):object'x。' 未找到”。

data = data %>% across(mutate(x.=x.[match(item,x.)]))

我將不勝感激任何建議。 謝謝你。

library(tidyverse)
data %>%
  pivot_longer(-item) %>%
  filter(!is.na(value)) %>%
  mutate(item = value) %>%
  complete(item = 1:10, name) %>%
  pivot_wider(names_from = name, values_from = value)

# A tibble: 10 × 4
    item subj01 subj02 subj03
   <dbl>  <dbl>  <dbl>  <dbl>
 1     1      1      1      1
 2     2      2      2     NA
 3     3     NA     NA     NA
 4     4     NA     NA     NA
 5     5      5      5     NA
 6     6     NA      6      6
 7     7     NA     NA     NA
 8     8     NA      8     NA
 9     9      9      9      9
10    10     10     10     NA

暫無
暫無

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

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