【发布时间】:2026-02-02 19:20:03
【问题描述】:
我有一个 sparklyr 数据框 df,看起来像这样:
`id label1 label2 label3 output
1 car 1 dev 40
1 jeep 1 test 50
2 car 2 dev 40
3 suv 1 dev 50
3 suv 2 dev 60
3 suv 2 dev 75
3 suv 2 dev 70
我还有一个固定长度的向量
vector = c(1,4,3,7)
我想添加一个新列 vector_val 到 df,具体取决于每个 id, label1, label2 and label3 的行数,以便向量中的第一个 n 值填充为 vector_val 其中 n = 数量每组的行数
我试过了:
df <- (df %>% arrange(id) %>% group_by(id, label1, label2, label3) %>% mutate(n_records=n()) %>% mutate(vector_val = rep(vector, length=n_records)))
这会返回一个错误:
eval_bare(call, env) 中的错误:找不到对象“n_records”
预期输出是:
`id label1 label2 label3 output vector_val
1 car 1 dev 40 1
1 jeep 1 test 50 1
2 car 2 dev 40 1
3 suv 1 dev 50 1
3 suv 2 dev 60 1
3 suv 2 dev 75 4
3 suv 2 dev 70 3
【问题讨论】:
-
请分享预期输出
-
为什么最后 3 个值是 1、4 和 3,而它们的 id、label1、label2 和 label3 完全相同?
-
因为我们在该组中有 3 行。最后 3 行只有 1 个唯一的 id、label1、label2 和 label3 组合。所以这个唯一组合的行数是 3。因为它是 3,所以我需要将向量的前 3 个数字添加到新列 vector_val 中。向量的前 3 个数字是 1、4 和 3。