Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 获取第一个非NA值的索引_R_Na - Fatal编程技术网

R 获取第一个非NA值的索引

R 获取第一个非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

我有一个很大的经济数据集。数据,所有这些数据都有不同的开始日期。我试图找到每个开始日期的索引(即第一个非零)

我已经尝试了循环和(!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)
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())