【发布时间】:2020-12-22 14:29:14
【问题描述】:
我有一个看起来像这样的数据集。
df <- tibble::tribble(
~name, ~x, ~y, ~z,
"N/A", 1, "testSmith", -100,
"N A", 3, "NOt available", -99,
"test Smith", NA, "test Smith", -98,
"Not Available", -99, "25", -101,
"test Smith", -98, "28", -1)
我想创建一个新的 data.table,将所有行都保留为字符串“test”。
最终的数据集应该是这样的
name x y z
<chr> <dbl> <chr> <dbl>
1 N/A 1 testSmith -100
2 test Smith NA test Smith -98
3 test Smith -98 28 -1
我可以像这样逐列地做这个
setDT(df)[name%like%"test"|y%like%"test"]
这种方法的问题是我有数百个字符串变量,我想找到一种更紧凑的方法。我尝试了以下方法,但它们不起作用
chvar <- keep(trai,is.character)%>%names()
setDT(df)[chvar%like%"test"]#error
setDT(df)[(chvar)%like%"test"]#error
setDT(df)[.(chvar)%like%"test"]#empty dt
有人知道我怎样才能快速有效地做到这一点吗?
非常感谢您的帮助
【问题讨论】:
标签: r data.table tidyverse