我想在按“prop”分组后,根据“井”的值生成列well_rep。
类似于cur_group_id,但是数字在不同的组中从1开始?
如果我们想使用cur_group_id
,做一个嵌套分组,然后提取列
library(dplyr)
df %>%
group_by(prop) %>%
mutate(well_rep2 = cur_data() %>%
group_by(well)%>%
transmute(out = cur_group_id()) %>%
pull(out))
-输出
# A tibble: 40 x 4
# Groups: prop [2]
well prop well_rep well_rep2
<chr> <int> <int> <int>
1 C03 0 1 1
2 C03 0 1 1
3 C03 0 1 1
4 C03 0 1 1
5 C03 0 1 1
6 C05 0 2 2
7 C05 0 2 2
8 C05 0 2 2
9 C05 0 2 2
10 C05 0 2 2
# … with 30 more rows
df <- structure(list(well = c("C03", "C03", "C03", "C03", "C03", "C05",
"C05", "C05", "C05", "C05", "C05", "C05", "D02", "D02", "D02",
"D02", "D02", "D02", "D02", "D02", "D02", "E07", "E07", "E07",
"E07", "E07", "E07", "E07", "E07", "E07", "E07", "E07", "F02",
"F02", "F02", "F02", "F02", "F02", "F02", "F02"), prop = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 50L, 50L, 50L, 50L,
50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L,
50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L, 50L), well_rep = c(1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L)), class = "data.frame", row.names = c(NA,
-40L))
你可以做:
df %>%
group_by(prop) %>%
mutate(well_rep = as.numeric(as.factor(well)))
# A tibble: 40 x 3
# Groups: prop [2]
well prop well_rep
<chr> <int> <dbl>
1 C03 0 1
2 C03 0 1
3 C03 0 1
4 C03 0 1
5 C03 0 1
6 C05 0 2
7 C05 0 2
8 C05 0 2
9 C05 0 2
10 C05 0 2
以下是使用匹配
和重复
的几种方法-
library(dplyr)
df %>%
group_by(prop) %>%
mutate(well_rep1 = match(well, unique(well)),
well_rep2 = cumsum(!duplicated(well)))
# well prop well_rep well_rep1 well_rep2
#1 C03 0 1 1 1
#2 C03 0 1 1 1
#3 C03 0 1 1 1
#4 C03 0 1 1 1
#5 C03 0 1 1 1
#6 C05 0 2 2 2
#7 C05 0 2 2 2
#8 C05 0 2 2 2
#9 C05 0 2 2 2
#10 C05 0 2 2 2
#11 C05 0 2 2 2
#12 C05 0 2 2 2
#13 D02 50 1 1 1
#14 D02 50 1 1 1
#15 D02 50 1 1 1
#16 D02 50 1 1 1
#17 D02 50 1 1 1
#18 D02 50 1 1 1
#19 D02 50 1 1 1
#20 D02 50 1 1 1
#21 D02 50 1 1 1
#22 E07 50 2 2 2
#23 E07 50 2 2 2
#24 E07 50 2 2 2
#25 E07 50 2 2 2
#26 E07 50 2 2 2
#27 E07 50 2 2 2
#28 E07 50 2 2 2
#29 E07 50 2 2 2
#30 E07 50 2 2 2
#31 E07 50 2 2 2
#32 E07 50 2 2 2
#33 F02 50 3 3 3
#34 F02 50 3 3 3
#35 F02 50 3 3 3
#36 F02 50 3 3 3
#37 F02 50 3 3 3
#38 F02 50 3 3 3
#39 F02 50 3 3 3
#40 F02 50 3 3 3
这是我拥有的数据帧的简化版本: 在这个 df 中,row.names 是唯一的 ID(我知道它打破了整洁数据的规则)。 在示例中,我们可以看到行id1和行id2是重复的。 我想做的是确定它们是重复的,并为这些重复项分配一个唯一的组名称。但请注意,将有多行彼此重复。 我希望的产出是: 有什么想法吗? 编辑: 我的原始数据示例:
我的数组包含从0到整数的随机唯一数。最大值。 如何生成唯一的id/签名(int)来唯一地标识每个数组,而不是搜索每个数组并检查每个数字。 例如 每个数组可以有不同的长度,但数字在数组中不重复,可以在其他数组中重复。每个数组的唯一id的目的是通过id来识别它,以便快速进行搜索。数组包含组件的id,数组的唯一签名/id将标识其中包含的组件。 此外,无论数组中的值的顺序如何,生成的id应该是相同的。像{
null 无效示例: 关于只有当值是唯一的时,我如何匹配有什么建议吗?
我正在处理一个大的时间序列,其中一列包含四个不同的传感器,一列包含测量值。我需要为属于同一时间的测量分配一个 id。问题是,每个设备的测量时间略有不同,因此我不能简单地按时间戳对它们进行分组。在按时间排序的数据框中,应分组的测量值可以通过唯一设备 ID 序列进行识别。这里的问题是,一次 4 台设备记录一个值,另一次 3 台设备记录一个值。我的数据如下所示。 您可以通过以下方式复制: 我需要为连续的
问题内容: 为了报告目的,我需要透视每个记录上唯一的查询结果。我当前的声明是: 查询输出的示例是: 最终,信息需要看起来像这样: 我在想我需要为“ pivot_id”添加一列,以便每个分组都有一个共同的记录,因此在数据透视之前的查询结果将如下所示: 哪种SQL语句将为每次购买生成一个自动记录号,而且还会从每个customer_name重新开始? 使用SQL代码生成器在Access 2007中工作。
问题内容: 在处理从YQL返回的JSON时,我发现自己正在寻找一种从数组中提取所有唯一值的方法。 代码看起来有点“忙”,我想知道是否有更优雅的方法从数组中提取唯一值。 问题答案: 您可以使用indexOf来检查元素是否在数组中。 或者如果您具有唯一的ID或名称,则使用对象而不是数组:var output = {}