gpt4 book ai didi

r - 列的任何单元格出现在任何其他列中的频率是多少?

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

我有一个关于比较数据框中的列的问题......
假设我有一些看起来像这样的数据:

Unique <- c("apple", "orange", "melon", "car", "mouse", "headphones", "light")
a1 <- c("apple", "tomato", "banana", "dog", "cat", "headphones", "future")
a2 <- c("apple", "orange", "pear", "monkey", "dog", "cat", "river")
a3 <- c("tomato", "pineapple", "cherry", "car", "space", "mars", "rocket")
df <- data.frame(Unique, a1, a2, a3)
df
> ## df
## Unique a1 a2 a3
## 1: apple apple apple tomato
## 2: orange tomato orange pineapple
## 3: melon banana pear cherry
## 4: car dog monkey car
## 5: mouse cat dog space
## 6: headphones headphones cat mars
## 7: light future river rocket

我要回答的问题是: 除了在唯一列中,“唯一”列的每个单元格出现在整个数据框中的频率是多少?

我想要一个看起来像这样的输出:
 apple     2 
orange 1
melon 0
car 1
mouse 0
headphones 0
light 0

因为在除“Unique”列之外的整个数据框中,apple 出现了 2 次,orange 出现了 1 次,melon 出现了 0 次,以此类推……

你将如何得到这个?

另外,我们如何根据频率的数量对它们进行排序,比如从高到低?

这几天我一直在尝试解决这个问题,我就是无法破解它......
任何帮助将不胜感激!

p.s.此外,在 R 中,似乎数据帧中的每个“单元格”都没有引用单元格..?我对么?它们指的是什么,元素?

最佳答案

我们可以unlist 'Unique' 以外的列,将其转换为 factorlevels指定为“唯一”并获取 tablebase R

table(factor(unlist(df[-1]), levels = df$Unique))
# apple orange melon car mouse headphones light
# 2 1 0 1 0 1 0

或使用 tidyverse
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -Unique) %>%
mutate(value = factor(value, levels = unique(Unique))) %>%
filter(!is.na(value)) %>%
count(value, .drop = FALSE)
# A tibble: 7 x 2
# value n
#* <fct> <int>
#1 apple 2
#2 orange 1
#3 melon 0
#4 car 1
#5 mouse 0
#6 headphones 1
#7 light 0

关于r - 列的任何单元格出现在任何其他列中的频率是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61089997/

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