【发布时间】:2020-08-08 16:12:26
【问题描述】:
早上好,
我有 2 个数据框:(25000,66) 和一个包含 10 个组和每个组的最后一个 id 的温度表 (10,2)。
在大数据集中,我有一个名为id 的变量。只是id = row_number()
id
1
2
3
4
5
...
25000
编辑:很多答案,感谢您的所有想法。阅读后我意识到我忘记了数据描述中的一个重要步骤,我向您道歉。
我在原始bigdataset 上使用合成采样来生成新点。因此,在对id 列进行采样后,如下所示:
id
1
2
2.1
3
3.8
4.74
5.12
6
...
25000
这就是为什么我使用带 last_id 的 between 子句将 id 重新分配给他们的组。
阈值表:
last_id group_name
50 grp1
1500 grp2
8900 grp3
...
25000 grp10
我想向大数据集添加新列,以便仅基于 id 在阈值表指定的组范围内的条件获得 id 和组名。
现在我写了这个:
df <- df %>%
dplyr::mutate(group_name = case_when(id < last_id[1,1] ~ last_id[1,2],
between(id, last_id[1,1], last_id[2,1]) ~ last_id[2,2],
between(id, last_id[2,1], last_id[3,1]) ~ last_id[3,2],
between(id, last_id[3,1], last_id[4,1]) ~ last_id[4,2],
between(id, last_id[4,1], last_id[5,1]) ~ last_id[5,2],
between(id, last_id[5,1], last_id[6,1]) ~ last_id[6,2],
between(id, last_id[6,1], last_id[7,1]) ~ last_id[7,2],
between(id, last_id[7,1], last_id[8,1]) ~ last_id[8,2],
between(id, last_id[8,1], last_id[9,1]) ~ last_id[9,2],
id > last_id[9,1] ~ last_id[10,2]))
)
但它不起作用,我收到此错误:
FUN 中的错误(左,右):比较 (5) 仅适用于类型 列表和原子
而且这段代码看起来很糟糕,必须有其他方法使用 apply 或其他 dplyr 函数吗?
感谢您的阅读。
【问题讨论】: