【问题标题】:Constructing column of time series in R data frame在R数据框中构建时间序列列
【发布时间】:2021-06-24 09:10:33
【问题描述】:

考虑

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

有人可以帮忙吗?

【问题讨论】:

  • 你想要特定类的n 列吗?还是把它作为角色很好?
  • 具体类。时间序列。

标签: r time-series apply


【解决方案1】:

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 

【讨论】:

  • 时间序列对象列表。见class(x$n[[1]][[1]])。我认为downvote 现在已经被撤销了。
猜你喜欢
  • 2021-03-18
  • 2015-07-28
  • 1970-01-01
  • 2020-07-11
  • 2020-02-19
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多