我使用RNCEP后台来获取temp的重新分析数据。我的数据看起来像这样:
(DD1 <- array(1:12, dim = c(2, 3, 2),
dimnames = list(c("A", "B"),
c("a", "b", "c"),
c("First", "Second"))))
# , , First
#
# a b c
# A 1 3 5
# B 2 4 6
#
# , , Second
#
# a b c
# A 7 9 11
# B 8 10 12
str(DD1)
# int [1:2, 1:3, 1:2] 1 2 3 4 5 6 7 8 9 10 ...
# - attr(*, "dimnames")=List of 3
# ..$ : chr [1:2] "A" "B"
# ..$ : chr [1:3] "a" "b" "c"
# ..$ : chr [1:2] "First" "Second"
我认为这是一个表格数据?
我需要将数据写为csv文件,其中包含以下内容:
y a a b b c c
x A B A B A B
1 2 3 4 5 6
7 8 9 10 11 12
但是当我使用write.csv
时,我得到了这个:
write.csv(DD1)
# "","a.First","b.First","c.First","a.Second","b.Second","c.Second"
# "A",1,3,5,7,9,11
# "B",2,4,6,8,10,12
我以为我必须首先转置数据。所以我用过这个:
DD2 <- as.data.frame.table(DD1)
我也使用了t()
,但也没有用。
答案 0 :(得分:2)
R中的转置函数是t(),所以希望这对你试图转置的数据帧起作用。
DD3= t(DD2)
答案 1 :(得分:1)
您与as.data.frame.table(DD1)
走在了正确的轨道上。这将为您提供一个“长”数据集,然后可以将其转换为可以使用write.csv
的“宽”表单。
但请注意,R只允许一行标题,因此您必须将显示为“x”和“y”的内容组合成一个标题行。
这是我建议的方法:
library(data.table)
(DD2 <- dcast(data.table(as.data.frame.table(DD1)),
Var3 ~ Var1 + Var2, value.var = "Freq"))
# Var3 A_a A_b A_c B_a B_b B_c
# 1: First 1 3 5 2 4 6
# 2: Second 7 9 11 8 10 12
然后,您可以在“DD2”对象上轻松使用write.csv
。