R 数据帧切片
我有一个4352个观察值和21列的数据框架。第一列是日期向量,其他20列是数字向量(表示股票价格)。由于某些天(即周末和节假日)没有交易,因此一些观察结果在第2:21列中有NA 下面的代码向我显示了指示存在NA的逻辑数据框,并且测试数据框与输入表具有相同的维度R 数据帧切片,r,dataframe,slice,R,Dataframe,Slice,我有一个4352个观察值和21列的数据框架。第一列是日期向量,其他20列是数字向量(表示股票价格)。由于某些天(即周末和节假日)没有交易,因此一些观察结果在第2:21列中有NA 下面的代码向我显示了指示存在NA的逻辑数据框,并且测试数据框与输入表具有相同的维度 test <- is.na(prices[, 2:21]) %>% as.data.frame() 测试%as.data.frame() 但是,当我执行以下操作时,结果是48052个观察值,带有额外的行名称,例如NA.40
test <- is.na(prices[, 2:21]) %>% as.data.frame()
测试%as.data.frame()
但是,当我执行以下操作时,结果是48052个观察值,带有额外的行名称,例如NA.40755等
testis.na(prices[,2:21])
是具有TRUE
/FALSE
值的逻辑矩阵。我不确定您在比较它时试图做什么,因为这将返回相同维度的逻辑矩阵。您需要使用rowSums
将所有行值合并在一起,以便每行中只有一个值
如果要删除包含所有NA
值的行,可以使用:
prices <- prices[rowSums(!is.na(prices[, 2:21])) > 0, ]
价格0,]
我们可以使用Reduce
和lappy
从base R
prices <- prices[!Reduce(`&`, lapply(prices[2:21], is.na)),]
prices或您可以使用dplyr包中的drop_na()。OP在这里没有共享示例,因此很难绝对确定,但是drop_na
会删除具有任何na
值的行。在这里,我将删除包含所有NA
值的行。
prices <- prices[rowSums(!is.na(prices[, 2:21])) > 0, ]
prices <- prices[!Reduce(`&`, lapply(prices[2:21], is.na)),]