读取几个对象的几个变量的几个可观察对象

时间:2017-06-27 16:07:33

标签: r

我想从文件中读取数据到R。在这个文件中,我有很多设备,每次设备都有很多测量点(电流对电压)(在开始时由SN标识)。因此,每台设备我都有两套不同的测量方法:

Before:
SN Temp rad grid grid_pos M Ubias Id M(for_1/M_dM/dV) 1/M_dM/dV
0711006316 0 0 47 1 1.000562 29.949368 -0.024111 0.999974 0.011783
0711006316 0 0 47 1 1.00222 54.997185 0.00171 1.001218 0.03954

After:
SN Temp rad grid grid_pos M Ubias Id 1/M_dM/dV
0711006316 0 0 47 1 31.1330427146 315.723640081 0.95654705303 2.90068387639
0711006316 0 0 47 1 32.4380778593 317.136008883 0.992233239064 2.93656451266
0711006316 0 0 47 1 33.8091346758 318.548377685 1.02972478771 2.97426034878
0711006316 0 0 47 1 35.2513676252 319.960746486 1.06916264771 3.01391310149
0711006316 0 0 47 1 36.7704819283 321.373115288 1.11070282833 3.05567963014


Before:
SN Temp rad grid grid_pos M Ubias Id M(for_1/M_dM/dV) 1/M_dM/dV
0711006319 0 0 47 1 1.000560 29.942378 -0.024012 0.999321 0.011782
0711006319 0 0 47 1 1.00223 54.997155 0.00170 1.001218 0.03954
0711006319 0 0 47 1 1.00286 56.747125 0.0018 1.001421 0.04671

After:
SN Temp rad grid grid_pos M Ubias Id 1/M_dM/dV
0711006319 0 0 47 1 31.1330422116 315.727640051 0.95655702303 2.90068287633
0711006319 0 0 47 1 32.6382778523 317.138008287 0.992233219078 2.95686421961
0711006319 0 0 47 1 33.8091346758 318.548377685 1.02972478771 2.98426037887
0711006319 0 0 47 1 37.2513276222 319.990742488 1.03956224774 3.01321314158

我知道如何阅读一般的数据:但我不知道如何处理这些东西。甚至在C ++中花了几天时间。在遥远的未来,我想直接将它从C ++传递给R,但目前我想熟悉R.我对文件的格式有问题如下:我不知道如何分开不同的设备。并将两组测量点(前/后)保持在一起。

底线:我想像C ++中那样处理这些数据,我将两组测量点分别存储在代表每个设备的向量中。如何在R?中做到这一点?

PS:我将数据更改为:

Before:
(...)
912009897 1.00324 19.9895
912009897 1.01954 79.9714
912009897 1.02694 84.982
912009897 243.522 359.998
912009897 295.017 361.998
912009897 370.227 364.001
912009897 489.931 365.999
912009897 709.234 368
912009897 1235.31 370
912009897 3939.82 372.001
912009912 0.998576 19.9797
912009912 1.70584 169.929
912009912 1.96067 179.926
912009912 2.28553 189.926
912009912 23.2988 305.969
912009912 49.2436 331.969
912009912 52.6625 333.961
912009912 56.4583 335.971
912009912 462.716 369.983
912009912 651.679 371.975
912009912 1074.7 373.985
912009912 2740.88 375.986
912009895 1.00474 49.9612
912009895 1.005 29.9478
912009895 1.00504 54.9601
912009895 1.00524 19.9774
912009895 1.00598 59.9602
912009895 1.00962 64.9591
912009895 1.01166 69.9575
912009895 1.01368 74.9605
912009895 1.01877 79.9679
(...)

After:
(...)
711006316 1.00056 29.9494
711006316 1.00222 54.9972
711006316 1.00241 34.9388
711006316 1.00314 59.9988
711006316 2.68367 199.964
711006316 3.17968 209.963
711006316 3.79324 219.952
711006316 4.55159 229.942
711006316 5.50147 239.946
711006316 598.444 369.932
711006316 935.255 371.926
711006316 1940.84 373.938
711006317 0.998282 34.9308
711006317 0.998532 39.9208
711006317 1.00056 44.9126
711006317 1.00126 54.9591
711006317 1.00339 59.9696
711006317 1.04151 99.9741
711006317 204.89 359.954
711006317 1133.84 371.958
711006317 2794.96 373.963
711006319 1.00166 24.9969
711006319 1.03296 95.0028
711006319 1.04324 100.002
711006319 1.07155 110.005
711006319 1.11089 120
711006319 1.17016 129.988
(...)

现在我只需要知道如何将这些表中的设备和数据点匹配在一起。例如。具有SN / ID 711006319的设备具有六个数据点,用于"在" -case之后,因此在R中我想仅适合这六个数据点。对于具有9个数据点的SN / ID 711006317的设备也是如此。因此,我必须以某种方式从该表中提取相应的数据点并将它们分配给适当的设备。最后,我想分别为每个设备安装自己的数据点:

Extract devices separately out of the table

1 个答案:

答案 0 :(得分:1)

根据您对数据的需求,确定您的输入是什么以及您的目标是什么,这将是非常有帮助的。

如果您的问题是关于格式化数据,通常良好的做法(我已经理解并使用它)是每行应该是一个观察/数据点,每列作为变量或观察ID。因此,如果所有“之前”观察结果具有完全相同的变量,并且所有“后”观察结果具有相同的变量(跨设备),则可以将数据保存为两个表,一个before和一个{{ 1}},每个都有一个用于设备id的列(上面的“SN”)和每行所有相应变量的单个数据点,然后只用after或{{1将两个单独的表读入R中}}。如果您希望能够轻松匹配两个表之间的前后观察,则可以创建对应的列read.table()read.csv(),并使用before$id在它们之间进行操作。

我这样说是因为看起来你的after$idmatch()有不同的观察次数和不同数量的变量 - 但如果你的变量大多数相同(看起来可能就是这种情况)然后你可能想把它全部放在一个表中,附加一个id列,无论是“之前”还是“之后”观察,只有一个数据集中没有变量的before值或另一个。排序取决于你想做什么。

如果您想在R中使用“长”格式,请查看tidyr页面。

编辑:

在不知道您的输入数据格式的情况下(您的示例中的那四个不同的表是否必须单独读取?您能否将所有“之前”数据组合为一个表格,或者您是否要求将它们组合在一起R?)和您的数据目标(将决定您需要的数据结构类型),很难提供帮助。但是,这是一个猜测,假设你想要在一个数据集中全部(你可以根据设备进行子集/聚合/模型,是的,但这将是一个不同的问题):

after