gpt4 book ai didi

r - 插入空行以完成列的情况

转载 作者:行者123 更新时间:2023-12-02 09:30:34 24 4
gpt4 key购买 nike

假设我有一个 data.table

col1   col2    col3
a 123 1
a 433 2
a 322 3
b 43 1
b 4333 2
c 43 1

在上表中,col1 的每个类别应有 3 行。但只有类别 a 有 3 行。因此,我想插入带有 NA 的空白行,以弥补 col1 其他类别的缺失情况。输出看起来像

col1   col2    col3
a 123 1
a 433 2
a 322 3
b 43 1
b 4333 2
b NA 3
c 43 1
c NA 2
c NA 3

如何通过一次函数调用来实现这一目标?

最佳答案

data.table 我认为这个习惯用法是与 col1col3 的笛卡尔/叉积合并的

(@Jealie 和 @PLapointe 的回答也如此):

DT[CJ(col1 = col1, col3 = col3, unique=TRUE), on = c("col1", "col3")]

col1 col2 col3
1: a 123 1
2: a 433 2
3: a 322 3
4: b 43 1
5: b 4333 2
6: b NA 3
7: c 43 1
8: c NA 2
9: c NA 3

CJ 构造笛卡尔积,A[B,on=cols] 与结果中 B 的所有行进行合并.


tidyr 在 data.table 之外,另一个具有更好语法的替代方案是在 tidyr 中:

library(tidyr)
complete(DT, col1, col3)

不幸的是,这不会返回 data.table。您可以在结果上使用 setDT 来修复该问题。

关于r - 插入空行以完成列的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33576803/

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