【发布时间】:2020-07-20 03:33:38
【问题描述】:
我正在尝试使用 R 从 excel 文件中提取和清理数据。其中一些 excel 文件包含多个表结构(由空行分隔),我想将它们分成多个 data.tables。
我只是尝试使用以下方法返回完全为空的行的索引:
blankrows <- which(all(is.na(tempdata)), arr.ind = TRUE)
然后我可以用它来对数据进行子集化(“tempdata”是一个 data.table)
如果我只使用is.na(tempdata),我会得到所有具有任何 NA 值的索引(这不是我想要的),但是当我使用all() 时,即使肯定有空行,我也不会得到任何索引.我可能误解了这两个函数中的一个或两个,但我的理解是is.na() 返回一个逻辑变量向量,如果它们都是 true,all() 应该返回 true。
【问题讨论】:
-
我用
all包装它,它会是一个TRUE/FALSE,然后用which包装会返回1。按行检查NA 会更容易,然后执行用于拆分数据集。即i1 <- dt[, Reduce(&, lapply(.SD, is.na))] ; split(dt, cumsum(i1)) -
顺便说一句,
|或&周围有反引号。目前尚不清楚您希望以哪种方式拆分,即整行是 NA 还是任何 NA 行 -
也许可以查看
readxl包,因为它允许在 Excel 中读取矩形数据块? -
非常感谢,@akrun!
标签: r data.table subset data-cleaning