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