当前位置: 首页 > 知识库问答 >
问题:

将唯一组分配给相同的行

公西修文
2023-03-14

这是我拥有的数据帧的简化版本:

structure(list(a = structure(c(1L, 1L, 1L), .Label = "A", class = "factor"), 
    b = structure(c(2L, 2L, 1L), .Label = c("A", "B"), class = "factor"), 
    c = structure(c(1L, 1L, 1L), .Label = "A", class = "factor")), .Names = c("a", 
"b", "c"), row.names = c("id1", "id2", "id3"), class = "data.frame")

在这个 df 中,row.names 是唯一的 ID(我知道它打破了整洁数据的规则)。

在示例中,我们可以看到行id1和行id2是重复的。

我想做的是确定它们是重复的,并为这些重复项分配一个唯一的组名称。但请注意,将有多行彼此重复。

我希望的产出是:

ID_NAME  A B C GROUP
row_id1  A B A   1
row_id2  A B A   1
row_id3  A A A   2

有什么想法吗?

编辑:

我的原始数据示例:

dput(head(temp))
structure(list(name = c("3 - ПЛАСТ  ДОО   С.МУРТИНО  Друштво за производство,трговија и услуги увоз-извоз", 
"FABRIKA ZA OPREMA I DELOVI FOD DOOEL NOVACI AD ELEM SKOPJE", 
"Tрговско друштво за трговија на големо и мало и превоз СЕЈ-ПРОМ  Охрид ДОО", 
"АВТ ИНТЕРНАТИОНАЛ ДОО СКОПЈЕ   Друштво за производство,трговија и услуги", 
"АГНЕСА  ДООЕЛ  БИТОЛА Друштво за производство услуги и трговија на големо и мало", 
"АГРАР ТРЕЈД ДООЕЛ Велес"), h_interni_procent = c(0.02, 0.01, 
NA, NA, NA, 0.015), h_interni_iznos_od = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_), h_interni_iznos_do = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), h_interni_min_iznos = c(12, 
10, 10, 6, 10, 10), h_internet_pp53_min_iznos = c(NA, NA, 2, 
NA, NA, NA), h_kibs_procent = c(0.015, 0.015, 0.015, NA, NA, 
0.015)), .Names = c("name", "h_interni_procent", "h_interni_iznos_od", 
"h_interni_iznos_do", "h_interni_min_iznos", "h_internet_pp53_min_iznos", 
"h_kibs_procent"), class = c("data.table", "data.frame"), row.names = c(NA, 
-6L), .internal.selfref = <pointer: 0x0000000000220788>)

共有2个答案

屠钊
2023-03-14

此代码将生成您想要的数据框。我将唯一ID移动到一个新列中,因为合并操作将覆盖您的行名。

b <- unique(a)
b$group <- 1:nrow(b)
a$id <- rownames(a)
c <- merge(a,b)

如果需要,您可以将id移回行名。

rownames(c) <- c$id
c$id <- NULL
薛弘壮
2023-03-14

我们可以从行名称创建一列,然后按列a、b、c分组,得到.GRP

library(data.table)
setDT(df1, keep.rownames = TRUE)[, GROUP := .GRP, by = .(a, b, c)][]

使用新示例

temp[, GROUP := .GRP, by = c(names(temp)[3:7])]
 类似资料:
  • 我想在按“prop”分组后,根据“井”的值生成列well_rep。 类似于cur_group_id,但是数字在不同的组中从1开始?

  • Kafka-来自同一组的多个使用者分配了相同的分区 我刚刚开始学习Kafka和诺德。我已经写了一篇关于消费者的文章如下 输出 有四个分区。 编辑 我使用了,如下所示。 生产者正在发送100条消息,收到的消息如下。这就是我如何知道分配的分区(不是从对象)。 当我运行两个这样的使用者实例(相同的主题和组)时,其中只有一个接收来自分区0的所有内容。这不是问题吗? 这是生产商代码。

  • 问题内容: 我想创建一个更新查询,该查询将为表中的值分配增量ID。但是,重复的值应收到相同的ID。 MyTable: 预期结果: 提前致谢! 问题答案: 您可以使用单词的自动递增ID字段创建一个表。 MySQL: MSSQL: 之后,您可以在secondTable中插入word的不同值。 最后,您可以使用分组ID更新表格:

  • 我正在处理一个大的时间序列,其中一列包含四个不同的传感器,一列包含测量值。我需要为属于同一时间的测量分配一个 id。问题是,每个设备的测量时间略有不同,因此我不能简单地按时间戳对它们进行分组。在按时间排序的数据框中,应分组的测量值可以通过唯一设备 ID 序列进行识别。这里的问题是,一次 4 台设备记录一个值,另一次 3 台设备记录一个值。我的数据如下所示。 您可以通过以下方式复制: 我需要为连续的

  • 我在Wordpress和Visual Composer一起工作,我有一个切换容器。基本上,我点击每个选项卡,下面的内容就会发生变化。我想通过CSS为每个选项卡分配一个不同的图像作为背景。但是,我已经实现了这一点,因为每个选项卡都有相同的类名(由visual composer赋予它),所以图像是相同的。我需要弄清楚如何给每个选项卡一个唯一的id,这样我就可以给每个选项卡一个自己的背景图像--但是由于

  • 问题内容: 说我有一个数组 np.zeros((4,2)) 我有一个值[4,3,2,1]的列表,我想分配给以下位置:[(0,0),(1,1),(2,1),(3,0) ] 如何不使用for循环或展平数组来做到这一点? 我可以使用花哨的索引来检索值,但不能分配它们。 ======更新========= 感谢@hpaulj,我意识到原始代码中的错误是。 当我使用zeros_like初始化数组时,它默认为