相关疑难解决方法(0)

如何在data.table中"取消列出"列

在我的表中,一些单元格是向量而不是单个值,即列是列表而不是向量:

dt1 <- data.table(
  colA=   c('A1','A2','A3'), 
  colB=list('B1',c('B2a','B2b'),'B3'),
  colC=   c('C1','C2','C3'), 
  colD=   c('D1','D2','D3')
)

dt1
#   colA    colB colC colD
#1:   A1      B1   C1   D1
#2:   A2 B2a,B2b   C2   D2
#3:   A3      B3   C3   D3 
Run Code Online (Sandbox Code Playgroud)

我需要将其重新整理成一个长格式的列表colB.到目前为止我这样做:

dt1[,.(colB=unlist(colB)),by=.(colA,colC,colD)]
#   colA colC colD colB
#1:   A1   C1   D1   B1
#2:   A2   C2   D2  B2a
#3:   A2   C2   D2  B2b
#4:   A3   C3   D3   B3
Run Code Online (Sandbox Code Playgroud)

它完成了工作,但我不喜欢我必须明确指出所有其他列名称by=.有没有更好的方法来做到这一点?
(我确定它已经在其他地方得到了解答,但到目前为止我找不到它)

PS理想情况下我想管理没有任何外部包

r data.table

13
推荐指数
2
解决办法
1898
查看次数

如何将除一个列之外的所有列作为参数传递给setkey()?

我想将列名传递给setkey()除了一两个.我可以轻松地像下面这样做:

setkey(df, column1, column2, column3, column6, ..., columnN, physical = TRUE)
Run Code Online (Sandbox Code Playgroud)

(请注意column4column5跳过).

但是它要求我列出除某些特定列之外的所有列名.我可以获取列的列表colnames(df),但我不知道如何(1)将其传递给setkey()(2)从列表中排除某些列?

r data.table

2
推荐指数
1
解决办法
539
查看次数

标签 统计

data.table ×2

r ×2