簡體   English   中英

保留具有匹配行的列

[英]Keep columns with matching rows

在 R 中,我有一個帶有 4 個變量的 dataframe:

df <- data.frame(
  v1=c(1,2,3,4),
  v2=c("x","y","z","q"),
  v3=c("x","b","c","d"),
  v4=c("a","y","c","d"),
  v5=c("a","b","z","d"),
  v6=c("a","b","c","q")
)

假設我使用 v2 作為參考,我想知道還有哪些其他列與 v2 的值匹配。

如何將 v3、v4 等中的值匹配到 v2,以便我知道匹配來自哪一列? 結果看起來像:

變量 1 變量 2 匹配
1個 X v3
2個 v4
3個 z v5
4個 q v6

我嘗試了匹配、%in% 和創建組合矩陣,但我找不到解決方案。

你可以試試:

library(tidyverse)

ref_col <- 'v2'

df %>%
  pivot_longer(-c('v1', ref_col)) %>%
  group_by(across(c('v1', ref_col))) %>%
  summarise(match = name[as.character(.data[[ref_col]]) == as.character(value)])

Output:

# A tibble: 4 x 3
# Groups:   v1 [4]
     v1 v2    match
  <dbl> <fct> <chr>
1     1 x     v3   
2     2 y     v4   
3     3 z     v5   
4     4 q     v6  

假設每行只有一場比賽

> colnames(df[-2])[max.col(df$v2==df[,-2])]
[1] "v3" "v4" "v5" "v6"

暫無
暫無

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

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