【问题标题】:how to recall output of "xtabs" function in r? [closed]如何在 r 中调用“xtabs”函数的输出? [关闭]
【发布时间】:2013-10-18 14:25:16
【问题描述】:

我有一个大数据集,其中包含纬度、经度、时间和值。我使用“xtab”函数来完全重塑我的数据集矩阵并将其转换为我需要的形式。现在的问题是我不知道如何调用或导出由“xtabs”函数创建的新输出矩阵。

这是我原始数据集的一部分:

number  lon lat month   value
1   -124.5  31.5    1980.1  NA
2   -123.5  31.5    1980.1  NA
3   -122.5  31.5    1980.1  NA
4   -121.5  31.5    1980.1  NA
5   -120.5  31.5    1980.1  NA
6   -119.5  31.5    1980.1  NA 

这是命令行:

AMS <- read.csv("C:\\Users\\wildfire.Acres.csv",header=TRUE)
xtabs(value~lat+lon+month, data=AMS, exclude="")

这是输出的一部分:

,   ,   month   =   1980.1  

lon             
lat -124.5  -123.5  -122.5  -121.5  -120.5
31.5    0   0   0   0
32.5    0   0   0   0
33.5    0   0   0   0
34.5    0   0   0   0
35.5    0   0   0   0
36.5    0   0   0   0.1
37.5    0   0   0.1 0
38.5    0   0   0.2 0

【问题讨论】:

  • 我不确定我是否理解。您可以将新矩阵放在另一个对象中并使用它吗? mat2 &lt;- xtabs(value~lat+lon+month, data=AMS, exclude="") ?
  • R 中,一切都是对象。当您在控制台上执行命令时,您会看到该对象的打印。如果您想对结果实际做某事,则需要保存它们。您可以使用分配运算符(即&lt;- 和/或=)。要访问矩阵的特定部分,请使用 subset 运算符,例如 mat[, , month==1980.1]
  • @juba; @Ricardo Saporta;我这样做了,我把它放在新对象中,但问题是当我在 Excel 中打开新矩阵时,例如令人惊讶的是它具有旧矩阵的格式!!!

标签: r export reshape


【解决方案1】:

输出不是矩阵,而是数组。要访问该数组的“1980.1”切片,您首先将结果分配给一个命名对象:

res <- xtabs(value~lat+lon+month, data=AMS, exclude="")
res[ ,  , "1980.1"]

您说您“在 Excel 中打开了结果”。您是否剪切并粘贴了屏幕输出?

当您将write.csv(并非设计用于输出数组的函数)与简单的 3x3x3 矩阵一起使用时,第三维会丢失:

res <- array(1:27, dim=c(3,3,3))
write.csv(res,"res1980.1.csv") 

# What my text editor shows:
"","X1","X2","X3","X4","X5","X6","X7","X8","X9"
"1",1,4,7,10,13,16,19,22,25
"2",2,5,8,11,14,17,20,23,26
"3",3,6,9,12,15,18,21,24,27

我仍然不清楚需要什么输出或结果。

【讨论】:

  • @DWin;不,我使用 write.csv 命令:
  • 现在当使用你的命令然后 write.csv 再次发生同样的事情。我使用这个命令,最后我又得到了旧矩阵! write.csv(res,"res1980.1.csv")
  • 您与我们的通信就像我们可以看到您的屏幕一样。我们不知道“旧矩阵”是什么样的。请在您的问题和回复中更加具体和广泛..
猜你喜欢
  • 2016-01-27
  • 1970-01-01
  • 2021-07-30
  • 2020-10-03
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
相关资源
最近更新 更多