【发布时间】:2019-04-03 12:08:29
【问题描述】:
我有一个数据表:
dt <- data.table(col1=c('aa,bb', 'bb,cc,ee', 'dd,ee'), col2=c('aa', 'cc', 'aa'))
> dt
col1 col2
1: aa,bb aa
2: bb,cc,ee cc
3: dd,ee aa
我想检查第 2 列是否出现在第一列的 strsplit 中,因此对于第一行,aa 是否存在于 aa,bb 中,用逗号分隔,这是真的。第二行也是如此,第三行也是错误的。我只想保留发生这种情况的行,所以只有第 1 行和第 2 行。
我的第一个想法是这样做:
dt[col2 %in% strsplit(col1, ',')]
但是,这会返回一个空的 data.table。
我可以想到多种解决方案来解决这个问题,包括使用tstrsplit 创建新列,或者熔化数据表,但是对于这样一个看似简单的任务,所有这些都有些乏味。有什么建议么?
【问题讨论】:
标签: r data.table strsplit