- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在数据框和动物园对象之间切换时遇到困难,特别是保持有意义的列名称,以及单变量和多变量情况之间的不一致:
library(zoo)
#sample data, two species counts over time
t = as.Date(c("2012-01-01", "2012-01-02", "2012-01-03", "2012-01-04"))
n1 = c(4, 5, 9, 7) #counts of Lepisma saccharina
n2 = c(2, 6, 0, 11) #counts of Thermobia domestica
df = data.frame(t, n1, n2)
colnames(df) <- c("Date", "Lepisma saccharina", "Thermobia domestica")
#converting to zoo loses column names in univariate case...
> z1 <- read.zoo(df[,1:2]) #time series for L. saccharina
> colnames(z1)
NULL
> colnames(z1) <- c("Lepisma saccharina") #can't even set column name manually
Error in `colnames<-`(`*tmp*`, value = "Lepisma saccharina") :
attempt to set colnames on object with less than two dimensions
#... but not in multivariate case
> z2 <- read.zoo(df) #time series for both species
> colnames(z2)
[1] "Lepisma saccharina" "Thermobia domestica"
要从动物园对象返回到原始格式的数据框,仅使用 as.data.frame
是不够的,因为它不包含日期列(日期最终为在行名中):需要做更多的工作。
zooToDf <- function(z) {
df <- as.data.frame(z)
df$Date <- time(z) #create a Date column
rownames(df) <- NULL #so row names not filled with dates
df <- df[,c(ncol(df), 1:(ncol(df)-1))] #reorder columns so Date first
return(df)
}
这在多变量情况下效果很好,但显然无法在单变量情况下恢复有意义的列名称:
> df2b <- zooToDf(z2)
> df2b
Date Lepisma saccharina Thermobia domestica
1 2012-01-01 4 2
2 2012-01-02 5 6
3 2012-01-03 9 0
4 2012-01-04 7 11
> df1b <- zooToDf(z1)
> df1b
Date z
1 2012-01-01 4
2 2012-01-02 5
3 2012-01-03 9
4 2012-01-04 7
有没有一种简单的方法可以处理两者单变量和多变量情况?看来 z1
需要以某种方式记住列名。
最佳答案
如果您不想删除维度,请使用drop=FALSE
:
R> (z1 <- read.zoo(df[,1:2], drop=FALSE))
Lepisma saccharina
2012-01-01 4
2012-01-02 5
2012-01-03 9
2012-01-04 7
如果您想将动物园索引作为列包含在 data.frame 中,可以执行类似 write.zoo
的操作:
zoo.to.data.frame <- function(x, index.name="Date") {
stopifnot(is.zoo(x))
xn <- if(is.null(dim(x))) deparse(substitute(x)) else colnames(x)
setNames(data.frame(index(x), x, row.names=NULL), c(index.name,xn))
}
<小时/>
更新:
为了简洁起见,在尝试编辑您的问题后,我想到了一种根据您的规范创建 df2b
的简单方法(如果您不这样做,这也适用于 z1
下降尺寸):
R> (df2b <- data.frame(Date=time(z2), z2, check.names=FALSE, row.names=NULL))
Date Lepisma saccharina Thermobia domestica
1 2012-01-01 4 2
2 2012-01-02 5 6
3 2012-01-03 9 0
4 2012-01-04 7 11
关于R 在动物园对象和数据框之间进行转换,不同列数的结果不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064097/
我是 Java 世界的新手(因为我主要用 C/C++ 编写)。我在我的应用程序中使用 map 。由于 java.util.Map 是抽象的,我需要实例化它的实现。通常我使用 HashMap 像: Ma
我不确定为什么会收到 当我将 MATCH 与动物园对象一起使用时在索引中。假设我有以下内容: a 在哪里行来自: mon mc mc2 matched 2012-01-0
我有一个 .csv 文件,其中包含 4 列数据,以一分钟为间隔针对一列日期/时间。缺少某些时间戳,因此我尝试生成缺少的日期/时间并在 Y 列中为它们分配 NA 值。我以前使用其他格式完全相同的 .cs
我在 R 中有一个动物园对象,它包含每日数据,但缺少周末数据。当我尝试在对象上运行某些函数(例如 ar() )时,我收到错误: mkt.ar <- ar(zoo_object) Error in na
我有一个每日动物园 (xts),其中包含以下格式的几十年数据: head(almorol) 1973-10-02 1973-10-03 1973-10-04 1973-10-05 1973-10-06
我有一个动物园对象,有一个 yearqtr 索引,涵盖大约 50 年。绘制时,x 轴每 10 年显示一次标签,感觉有点贫瘠: b=zoo(1:200,as.yearqtr(1900+seq(1,200
我正在使用类似于以下摘录的数据集: head(nomis.lng.agg) quarter decile avg.val 1 2004 Q4 1
我有两个具有不同时间分辨率的时间序列(传感器数据)。来自“xts/zoo”类( TS1 )的时间序列包括每小时值,而其他时间序列( TS2 )具有更好的时间分辨率(每 10 分钟观察一次)。即对于 T
我是一名优秀的程序员,十分优秀!