【发布时间】:2015-07-07 14:22:31
【问题描述】:
我在 matlab 中创建了一个小数据集,如下所示
并且可以在此处下载可重现的示例:https://www.dropbox.com/s/e2qssxd5pu0x6hn/TEST_DATA.mat?dl=0
我想做的是将此数据集导入 R 并对其进行重组。我发现 R.matlab 包很有帮助,并尝试了以下方法。
# Import matlab file into R
library(R.matlab)
# Read in data from matlab file
data_m <- readMat('TEST_DATA.mat')
# convert this to data.frame
df <- as.data.frame(data_m)
我得到的是以下data.frame:
df
TEST.DATA.1.1 TEST.DATA.2.1
ID 2 4
YEAR 1990, 1991, 1992 2000, 2001
DATA 10, 20, 30, 71, 72, 73 55, 60, 0, 2, 4, 6
DATA.NAME Test n1, n2, n3
正如这里的评论所建议的,str(df)的输出
'data.frame': 4 obs. of 2 variables:
$ TEST.DATA.1.1:List of 4
..$ ID : num [1, 1] 2
..$ YEAR : num [1:3, 1] 1990 1991 1992
..$ DATA : num [1:3, 1:2] 10 20 30 71 72 73
..$ DATA.NAME: chr [1, 1] "Test"
$ TEST.DATA.2.1:List of 4
..$ ID : num [1, 1] 4
..$ YEAR : num [1:2, 1] 2000 2001
..$ DATA : num [1:2, 1:3] 55 60 0 2 4 6
..$ DATA.NAME:List of 3
.. ..$ :List of 1
.. .. ..$ : chr [1, 1] "n1"
.. ..$ :List of 1
.. .. ..$ : chr [1, 1] "n2"
.. ..$ :List of 1
.. .. ..$ : chr [1, 1] "n3"
如何重组df 以便得到两个不同的data.frames,它们被ID 字段分割?
> ID2
ID YEAR data.Test data.Test2
1 2 1990 10 71
2 2 1991 20 72
3 2 1992 30 73
> ID4
ID YEAR data.n1 data.n2 data.n3
1 4 2000 55 0 4
2 4 2001 60 2 6
【问题讨论】:
-
发布
str(df)的结果可能会有所帮助 -
我用
str(df)的输出编辑了问题 -
尝试
df1 = df$TEST.DATA.1.1和df$TEST.DATA.2.1作为开始然后df1 = cbind(df1$YEAR, df1$DATA)最后names(df1)=... -
matlab 发送的数据结构中好像缺少
Test2。 -
@mts 感谢您的建议。但是我在数据中有大约 400 个不同的 ID,它们应该被分成几个 data.frames。这只是一个缩短的(希望是)可重现的例子......