gpt4 book ai didi

r - 如何在 R 中的不同大小的列中找到公共(public)元素?

转载 作者:行者123 更新时间:2023-12-02 02:10:44 26 4
gpt4 key购买 nike

我有一个名为 animals 的数据框,其中包含不同大小的列,这些列之间有一些常见和不常见的元素,如下所示:

Dog     Cat      Lion     Dog
Cat Lion Dog Shark
Lion Dog Shark Cat
Shark Shark Cat Lion
Whale Seal Moose
Seal Whale
Deer

我想要做的是识别每一列中的所有公共(public)元素,排除不常见的元素并将公共(public)元素组合到一列中,如下所示:

Dog
Cat
Lion
Shark

到目前为止,我已经尝试使用 duplicated(animals) 识别重复的元素,然后使用 animals[duplicated(animals)] 提取重复的元素,但这没有给出结果。谁有更好的方法?

最佳答案

我们可以使用intersect

Reduce(intersect, animals)
#[1] "Dog" "Cat" "Lion" "Shark"

或者可以使用tidyverse

library(dplyr)
library(tidyr)
pivot_longer(animals, cols = everything(), values_drop_na = TRUE) %>%
group_by(value) %>%
filter(n_distinct(name) == ncol(animals)) %>%
ungroup %>%
distinct(value)
# A tibble: 4 x 1
# value
# <chr>
#1 Dog
#2 Cat
#3 Lion
#4 Shark

数据

animals <- structure(list(v1 = c("Dog", "Cat", "Lion", "Shark", NA, NA, 
NA), v2 = c("Cat", "Lion", "Dog", "Shark", "Whale", "Seal", NA
), v3 = c("Lion", "Dog", "Shark", "Cat", "Seal", NA, NA), v4 = c("Dog",
"Shark", "Cat", "Lion", "Moose", "Whale", "Deer")),
class = "data.frame", row.names = c(NA,
-7L))

关于r - 如何在 R 中的不同大小的列中找到公共(public)元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67781377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com