【问题标题】:How to determine where first integer/float value starts in a list如何确定列表中第一个整数/浮点值的开始位置
【发布时间】:2016-08-06 14:15:05
【问题描述】:

我有一个包含几列的数据框。最后一列有 NA,比如前 50 行。有一些粗暴的方法,但是我如何编写一些可以判断第一个整数/浮点值从哪里开始的东西?

structure(list(col1 = c(646, 574, 590, 671, 618, 529), col2 = c(438, 
744, 730, 748, 507, 479), col3 = c(493, 661, 651, 715, 582, 571
), col4 = c(1047, 1252, 1335, 1269, 1185, 1147), col5 = c(883, 
1008, 996, 1019, 901, 846), col6 = c(824, 840, 766, 776, 868, 
927), col7 = c(727, 685, 708, 779, 717, 721), col8 = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_)), .Names = c("col1", 
"col2", "col3", "col4", "col5", "col6", "col7", "col8"), row.names = c(NA, 
6L), class = "data.frame")

对于我迭代的前 7 列,隔离列并将其放入时间序列模型中

for(colin 1:ncol(so)){

isoColumn<- so[,col]

model<-tbats(isoColumn)
}

是否有一种编程方法/算法可以用来判断第一个值在哪里,以便在将其插入 tbats 模型之前截断这些行?

【问题讨论】:

标签: r algorithm missing-data


【解决方案1】:

您可以使用which(!is.na(x))[1] 来定位第一个非NA 值,但为什么不这样做

models <- lapply(so,function(x) tbats(na.omit(x)))

?

【讨论】:

  • 在某些列中,我有几个 NA,我宁愿使用线性插补来填充值,而不是仅仅删除所有 NA
【解决方案2】:

如果处理大数据,Positionwhich 快得多,因为它只评估直到找到匹配项,而不是评估整个向量然后进行子集化

Position(function(x)!is.na(x), x)

【讨论】:

    猜你喜欢
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    相关资源
    最近更新 更多