r - 将值组合在一起
问题描述
我试图以这样一种方式对我的数据进行分组,即每个数据集的第一个值,然后是每个数据集的第二个值,然后是每个数据集的第三个值。这是我所做的,以及每个数据集的样子:
#datasets created
newmax <- sapply(unstack(subset), function(r){max(values(r))})
newmax1 <- sapply(unstack(subset5), function(r){max(values(r))})
newmax2 <- sapply(unstack(subset18), function(r){max(values(r))})
> newmax
[1] 285.9906 287.6668 276.2251 247.1718 254.9781 308.1921 234.6858 235.7213 242.0865 247.1022
233.6528 243.9972 297.6855
[14] 264.3488 251.2206 249.4745 242.8481 241.2680 347.7225 241.0539 359.7334 256.2414 343.5733
270.5300 237.6458 260.9076
[27] 281.6629 273.9240 237.9238 237.8657 274.8282 254.7619 274.5488 240.1335 288.5369 263.7763
256.8988 237.8154 335.7295
[40] 251.1009 268.0298 284.0815 335.7390 260.6265 261.9585 245.4095 317.5088 326.1608 301.0854
256.6393 261.7769 248.8044
[53] 316.8620 285.2788 291.7393 282.7814 295.2238 263.5885 293.1581 323.0423 275.8465 321.7197
267.7597 260.1087 300.4011
[66] 289.7009 312.8771 247.2548 310.7060 293.6764 294.6003 301.9609 274.3764 324.2272 326.5802
312.4825 306.0726 271.3173
[79] 292.4768 270.7873 287.0801 363.9818 256.2259 282.1166 305.7313 276.7374 356.4052 296.8313
355.2177 360.6911
> newmax1
[1] 159.0246 133.6294 153.0331 160.4190 148.2776 142.6571 172.3195 157.7454 148.3942 165.9219
139.6812 140.4338 161.9404
[14] 136.1558 222.1469 160.5796 146.9243 146.8993 138.4256 181.2822 180.0468 136.2687 149.4805
169.0774 156.5708 197.8407
[27] 191.2747 171.9067 302.4844 161.1594 166.2600 150.5847 171.2477 153.5008 176.8167 164.1645
202.1044 185.5567 159.5147
[40] 188.2911 157.7030 159.3245 168.7951 145.3923 184.0441 169.1975 152.4814 157.8601 218.1362
181.0313 241.6280 145.9474
[53] 181.1191 197.6868 160.4712 166.6491 182.9139 202.4592 164.4607 192.3751 216.7510 155.9616
223.6624 170.2424 192.1529
[66] 166.4860 162.0195 231.3395 178.0869 212.7882 172.4338 174.4920 196.2973 195.0461 232.1316
160.4764 235.2968 248.9072
[79] 164.1591 193.9029 173.5751 233.6983 160.4132 178.4975 238.9297 184.6619 202.9835 244.6498
225.4075 180.8024
> newmax2
[1] 240.5591 200.7394 215.9244 211.9053 194.3641 243.4610 185.3560 224.9627 191.5551 202.0553
219.7212 182.8306 218.4132
[14] 226.3639 234.4197 216.8123 225.2460 192.8765 257.7413 197.9228 213.0739 271.9188 192.6500
195.1350 194.0970 203.7642
[27] 179.7267 216.7133 199.1632 223.2381 248.6822 211.2326 241.4532 197.2935 194.6268 189.2713
198.8254 217.6894 227.3989
[40] 218.0017 198.4878 271.2049 225.8836 195.0280 235.8415 269.6207 177.6220 218.8525 238.0074
231.2968 206.1418 251.5883
[53] 195.4047 176.4463 265.4490 274.9973 262.3909 214.1287 348.5859 272.7213 230.3467 208.9446
247.6072 246.7016 225.6779
[66] 213.9412 279.3386 229.7833 270.4096 235.7482 211.5287 235.5385 200.0058 221.8117 210.8134
252.3336 214.9943 262.2128
[79] 217.4706 211.3952 216.3089 227.9274 282.2023 232.6686 239.9312 209.6954 238.7950 284.0325
233.5386 232.6486
为了隔离第一个、第二个和第三个值,我尝试了这个:
combined <- cbind(newmax[1],newmax1[1], newmax2[1], newmax[2], newmax1[2], newmax2[2],
newmax[3], newmax1[3], newmax2[3])
> combined
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 285.9906 159.0246 240.5591 287.6668 133.6294 200.7394 276.2251 153.0331 215.9244
这正是我想要的(即所有第一个值,然后是第二个值和第三个值)。但是,我希望数据按照原始数据集中的方式排列(即 newmax、newmax1、newmax2)——使用“cbind”似乎会创建列?另外,是否有更快的方法来以相同的方式排列值,或者我所做的唯一方法是什么?
谢谢,任何帮助将不胜感激!
解决方案
提供类似
sapply(x,
`[`, c(1,2,3))
的内容,它将对您的对象 xa 镜头应用索引;
或者类似的东西
lapply(X = x, FUN = subset, select=c(1,2,3))
如果是列,则不确定从您的数据中判断出什么适合您。
PS:rbind
将像cbind
列绑定一样进行行绑定
推荐阅读
- python - VSCode调试芹菜工人
- python - 基于字典分配的列中的无序值
- postgresql - 如何将 GeoJSON 地理数据转换为 PostGIS?
- c# - 使用帖子插入一些数据但实体模型对象带有空值?
- go - 不能使用 p[idx + 1:] (type []Person) 作为类型 Person in append
- javascript - 如何解决“我的第一个扫描值与我的第二个扫描值不同并且 HTML 中的值扫描与记事本中的值扫描不同?”
- vbscript - ForWriting 和 ForAppending VBS 的区别
- python-3.x - 使用 SQLAlchemy 向某些对象添加自定义删除行为
- c# - 如何在 C# 中使用 LINQ 以嵌套键:值格式转换 C# 对象列表?
- angular - Angular - 从子组件更改 Input() 不会通知父组件它已更新