gpt4 book ai didi

r - 在行 R 中找到相似的数字组

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:54:57 29 4
gpt4 key购买 nike

我试图在数据框中找到相似的数字模式。我有一个包含 5 列的数据框,有些列的随机数介于 3 到 50 之间。但是,对于某些行,第 2 列或第 3 列没有数字。

A   B    C   D   E
5 23 6
9 33 7 8 12
33 7 14
6 18 23 48
8 44 33 7 9

我想知道循环数字是多少,所以我感兴趣:

  • 第 1 行和第 4 行的编号为 23 和 6,
  • 第 2 行和第 5 行的编号为 9、33 和 8,
  • 第 2、3 和 5 行的编号为 33 和 7。

基本上我是在尝试获取不同组合的数量。

我对如何做到这一点有点困惑。我尝试将数字加入列表中。

for (i in 1:dim(knots_all)[1]) {
knots_all$list_knots <- list(sort(knots_all[i,1:5]))
}

我也试过 intersect 但它似乎不是很有效,因为 R 也考虑了我想忽略的 NA。

我想听听有关实现此目标的最佳方法的一些想法。我一直在考虑这个问题,但我无法理解如何找到答案。我的思绪被卡住了,所以非常感谢任何想法!

谢谢!

最佳答案

没有您想要捕获的特定/目标模式。您似乎需要一个过程来识别数据集中出现频率更高的数字,然后查看它们出现在哪些行中。

我将修改您的示例数据集,使数字 23 在同一行中出现两次,以说明一些有用的计数差异。

df = read.table(text = "
A B C D E
5 23 6 23 NA
9 33 7 8 12
33 7 14 NA NA
6 18 23 48 NA
8 44 33 7 9
", header=T)

library(dplyr)
library(tidyr)


df %>%
mutate(row_id = row_number()) %>% # add a row flag
gather(col_name,value,-row_id) %>% # reshape
filter(!is.na(value)) %>% # exclude NAs
group_by(value) %>% # for each number value
summarise(NumOccurences = n(), # count occurences
rows = paste(sort(row_id), collapse = "_"), # capture rows
NumRowOccurences = n_distinct(row_id), # count occurences in unique rows
unique_rows = paste(sort(unique(row_id)), collapse = "_")) %>% # capture unique rows
arrange(desc(NumOccurences)) # order by number popularity (occurences)

# # A tibble: 12 x 5
# value NumOccurences rows NumRowOccurences unique_rows
# <int> <int> <chr> <int> <chr>
# 1 7 3 2_3_5 3 2_3_5
# 2 23 3 1_1_4 2 1_4
# 3 33 3 2_3_5 3 2_3_5
# 4 6 2 1_4 2 1_4
# 5 8 2 2_5 2 2_5
# 6 9 2 2_5 2 2_5
# 7 5 1 1 1 1
# 8 12 1 2 1 2
# 9 14 1 3 1 3
# 10 18 1 4 1 4
# 11 44 1 5 1 5
# 12 48 1 4 1 4

关于r - 在行 R 中找到相似的数字组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48665115/

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