R 获取第一个非NA值的索引
我有一个很大的经济数据集。数据,所有这些数据都有不同的开始日期。我试图找到每个开始日期的索引(即第一个非零) 我已经尝试了循环和(!is.na)以及位置函数。对于for循环,我得到一个错误“closure”not subsettableR 获取第一个非NA值的索引,r,na,R,Na,我有一个很大的经济数据集。数据,所有这些数据都有不同的开始日期。我试图找到每个开始日期的索引(即第一个非零) 我已经尝试了循环和(!is.na)以及位置函数。对于for循环,我得到一个错误“closure”not subsettable x <- c(NA, NA, NA, 6, 5, 3, 7, 2, 7, 8) y <- c(NA, NA, NA, NA, NA, 3, 5, 6, 3, 9) z <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) m
x <- c(NA, NA, NA, 6, 5, 3, 7, 2, 7, 8)
y <- c(NA, NA, NA, NA, NA, 3, 5, 6, 3, 9)
z <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
mydata <- data.frame(x, y, z)
for (j in 1:ncol(mydata)){
index[j] <- min(which(!is.na(mydata[,j])))}
Position(function(x) !is.na(x), mydata)
x我们可以使用总结所有内容
library(dplyr)
mydata %>%
summarise_all(~which.max(!is.na(.)))
或者使用哪个
indx <- which(!is.na(mydata), arr.ind = TRUE)
tapply(indx[,1], indx[,2], FUN = first)
# 1 2 3
# 4 6 1
indx我们可以这样做:
sapply(mydata, function(xx) min(which(!is.na(xx))))
#> x y z
#> 4 6 1
Position
将起作用,但它不能同时作用于数据帧
,您必须在每列上循环它。例如:
sapply(mydata, Position, f=Negate(is.na))
#x y z
#4 6 1
尝试head(它(!is.na(mydata),arr.ind=TRUE)[,1],3)#[1]456
Position
会起作用,它只是不能同时作用于data.frame
上,你必须在每一列上循环它-sapply(mydata,Position,f=Negate(is.na))
例如,如果它是列索引mydata%>%(!is.na())