簡體   English   中英

在 R 數據框中構建時間序列列

[英]Constructing column of time series in R data frame

考慮

x=data.frame(a=c(5,2,7),b=c(3,5,NA),c=c(NA,NA,8))
paste_noNA<-function(x){ts(x[!is.na(x)],frequency=1)}
x$n<-apply(x,1,paste_noNA)

在運行最后一條語句時,出現錯誤

Error in `$<-.data.frame`(`*tmp*`, n, value = c(5, 3, 2, 5, 7, 8)) : 
  replacement has 2 rows, data has 3

我想要在新列 n 中以時間序列形式的輸出是:

5,3
2,5
7,8

有人可以幫忙嗎?

ts的輸出包裝在一個列表中並將其應用於該行。

x=data.frame(a=c(5,2,7),b=c(3,5,NA),c=c(NA,NA,8))
paste_noNA<-function(x) list(ts(x[!is.na(x)],frequency=1))
x$n <- apply(x,1,paste_noNA)
x

#  a  b  c    n
#1 5  3 NA 5, 3
#2 2  5 NA 2, 5
#3 7 NA  8 7, 8

當您分別查看n列時 -

x$n
#[[1]]
#[[1]][[1]]
#Time Series:
#Start = 1 
#End = 2 
#Frequency = 1 
#a b 
#5 3 

#[[2]]
#[[2]][[1]]
#Time Series:
#Start = 1 
#End = 2 
#Frequency = 1 
#a b 
#2 5 

#[[3]]
#[[3]][[1]]
#Time Series:
#Start = 1 
#End = 2 
#Frequency = 1 
#a c 
#7 8 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM